Mostly complete but needs ethods from ASTExplorer #33. Also extensive testing. #28