implemented getPossibleUserItems, done some refactoring and cleanup