Implemented all basic functionality