works with GCM.