use AbstractRequest