converted over to using left/right child instead of arraylists