Implemented all functionality except OAuth