Split up GCM into a start/update/finish cycle
11 files changed