Since User, CallLog, etc. will be serialized differently, Each Writes[T] will be different for each implementation of your Model trait, so a Writes[Model] has to know about the implementation it is trying to serialize.

It is therefore not possible to have it part of the Model trait, because this information isn't known yet when you define it.

A workaround in your case would be to define your Writes[Model] in the scope of your helper function instead.