Why Serializable? You're already providing a externalizer for it. There's no need to be Serializable unless there's gonna be a cache store  based on a third party library which will attempt to serialize this with other mechanisms except our externalizer architecture.