better take on parsing architecture