tree interface
node as a separate interface