Pretty much finalised, errors and ything