refactor problem types a bit