Refactored Link and Node, each to its own file