gcm implemented