complete assignment - Malvin Yeung and Sean Golob