Interface is more fully fleshed out however it is almost identical to a class object and I will need to simplify it. Added node type detection to the model