Refactoring (split each strategy into separate file).
Add a logger class for printing tree structure.
Fix logger from clobbering children nodes.