abstract trait-implementation