Challenge1: Finished basic implementation