Implemented all 4 methods.