make traits more flexible by splitting out node-related fragment