I'm not following why you created EntityClass<T> and EntityData<T>. Why not just use Class<T> and T in these methods?