Use SFINAE to remove boilerplate and allow serializing containers of types with Do methods. Oh god C++