I laughed when I read that GCM is hard for library authors. I remember trying to implement GCM but failing, so I decided to transcribe a "simple implementation" but failed at that also.
Then I decided to try OCB mode and it worked on the first try.
By the way, isn't OCB unpatented as of recently?