Trying to construct nodes top down.

TODO
  Write tests for each function