splitting out node types and attributes, still need to do ops