Implement issue #2

- allow requesting extra data
Some cleanup & tests
Merge branch 'issue#2'