beginning node rewrite :D