use recursive type syntax for Coretype