merge experimental into master

This will update the master branch to the 0.3.x version. If you still need the 0.2.x version use the 0.2.x branch.