implement the user module