refactoring giuserinterface factory