should probably get a rewrite.  Maybe I should ditch abnf