rework trait instantiation