I've been working on this, and after discussing with @pigmonkey we are going to try and keep this on a separate branch. PR coming soon!