Implemented all the methods except remove