internal dynamic Request(string method, string serviceUrl, ExpandoObject postData)
        {
            if (string.IsNullOrEmpty(serviceUrl))
                throw new ArgumentNullException("serviceUrl");

            string url = string.Format("{0}{1}", _baseUrl, serviceUrl);

            WebRequest request = WebRequest.Create(url);

            request.Method = method;
            request.ContentType = "application/json";
            request.Headers["X-Auth-Token"] = _authToken;

            //Write post data
            if (method == "POST" && postData != null || method == "PUT" && postData != null)
            {
                string json = postData.Flatten();

                var bytes = Encoding.ASCII.GetBytes(json);
                request.ContentLength = bytes.Length;
                var requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
            }

            string response;

            using (var webResponse =  request.GetResponse())
            {
                using (var streamReader = new StreamReader(webResponse.GetResponseStream()))
                {
                    response = streamReader.ReadToEnd();
                }
            }
            if (string.IsNullOrEmpty(response))
            {
                return null;
            }
            else
            {
                return response.ToExpando();
            }
        }