moved to using traits