refactoring - domains for challenges (not completed)
refactoring - domains for challenges (completed but needs a few unit test)