FIX: some Generics and annotations