Clean up and consolidate Specification code

Fixes #51