Initial commit of assignment 3, all three variants