Added all necessary parts. Polish at a later date.