simplified a little; now only parse() method needs to be impl.