Como remover o spray jsonFormat

Estou implementando alguma API de descanso que usa spray e akka. A API deve expor algum tipo de usuário CRUD. Vou usar apenas criar usuário nesta pergunta ...

case class User(id:String, name:String)  
case class Register(user:User, registrationId:String) 

trait DefaultJsonFormats extends DefaultJsonProtocol with SprayJsonSupport with MetaMarshallers {}

class RegistrationService(registration: ActorRef)
   (implicit executionContext: ExecutionContext) 
                   extends Directives with DefaultJsonFormats {
  implicit val timeout = Timeout(2.seconds)
  implicit val userFormat = jsonFormat3(User)
  implicit val registerFormat = jsonFormat1(Register)
  implicit val registeredFormat = jsonFormat1(Registered)

  val route =
      path("register") {
          post {  handleWith { ru: Register => (registration ?   ru).mapTo[Registered] } }
}

Agora vamos supor que a classe User tenha 30 campos, mas não existe jsonFormat30 (...) Como posso usar esses implícitos para qualquer objeto de classe de caso?

questionAnswers(1)

yourAnswerToTheQuestion