refactored from client/server to system/user