refactored settings and GCM