add trait logic