separating decorators and traits