use a value object for request parsing