add ParserFactory (it makes code independency)