basic user framework