Issue #6: User API