I think this thing should take a node struct and return a node struct. That just makes this a bit cleaner to use. I agree with @josephholsten  this wants to be a Node, and these want to be methods on Node. seem my previous wall of text on why we need to make interfaces in the library.  @bigkraig this is not an attack on what you have here I think its just a side effect of how the library is currently structured.  I was building the same stuff for cookbook(upload/download) and I've halted on that work to try and figure a better model out before going forward.