Split up into classes
refactoring classes
Refactored classes
Reorganized
Added main command-line interface program