finish v1 of user, write tests, update docs