Closes #27 and #28

I'm putting both of these issues in a single PR because #28 is dependent on #27. See the changelog and readme for what changed, and the code for how it changed :-) The demo is updated also.