first pass
second pass
third pass
fourth pass
Merge pull request #5 from twokul/refactoring

Refactoring