extract a common Request class