I know its long but its definitly worth reading