unit tests, coverage, some refactoring, and model changes
adds a more unique cache key
Merge pull request #24 from johncosta/performance_improvements

unit tests, coverage, some refactoring, and model changes
Update setup.py

Increment version