apply trait to abstract model