Probably needs some reformatting but up to date now