Abstraction

Fixes #2.