Adding in a lot of the missing stuff