Not yet fully tested, nor is the implementation near complete; this has been sitting idle for a while so I want to make sure I commit it and get it out there.