reworking with traits