added abstract request class