Issue 20

Not yet ready for merge.