move node definitions into their own file