better request parsing structure