relay: split more parsers up into two and cleanup
relay: split more parsers and update observer pattern in parsers