Refactored to return a constructor. Re-jigged tests to be more behaviour driven.
Bumped version.