Assignment 0 implementation
Assignment 1 implementation