final version of assignment