Separated TreeNode into its own file