New version of Element which is semi-mutable (node can be assigned once). Also, Element nodes now track direction