Squeezed another 10% out by introducing LoopingChar. Support added to parser and serialiser