REFACTOR
REFACTOR
REFACTOR
COVERAGE
REFACTOR
COVERAGE
REFACTOR + (added main)