split parsing into plugins for more maintenable and flexible code