cleans up toString method
add visit(tree) method
Add Factories
Add genetics functionality
Add more tests, not all passing right now.