chore: adopt derive_more to reduce boilerplate (#3573)