improved request class