Initial alpha v2 commit - WARNING: this is full of bad knowledge.  The implementation is reasonably stable but the knowledge WILL produce bad results.