use AbstractRequest for type hint