All test cases written for now. All passes