refactor user constrol