Implemented most methods.