Pretty much done at this point.  There is probably some refactoring that could still be done, especially in the AbstractBlock.   Also still needs scoring and leveling to be implemented properly.