move RestRequest to be an abstract class, and expose local/remote address