All tests passed except fold(not implemented yet)