problems is refactored to its own module