Currently we manually insert the implementation for each trait that Layer must implement - instead, we could try to write a macro that looks at all the fields and populate it directly, given all fields must implement the same traits anyway, it's a matter of match self { .. => op(), .. => op(),.. }.