Implemented many abstract methods