@orangy: using retrofit, how do you deal with the "can select a number of 'fields', which depend on the type being queried" issue? What I liked about the sealed class approach was that I was able to clamp down on what fields you could request and every subclass would know what would come back - so jackson really has it easy with the deserialization.