adding initial spec for refactoring
completed model refactor to push down logic
Merge pull request #1 from alycit/mmodel_refactor

Model refactor