Merge unstable into master

Code works fine... Mostly API & structure changes.