repetition and lookahead stuff