Implemented full functionality