core no longer depends on glm