Merge pull request #15 from mdickinson/refactor

Refactor internals.
Update setup.py.
FIX: download URL was incorrect in setup.py.
Merge remote-tracking branch 'origin/master' into refactor