public OrganizationResponse Execute(OrganizationRequest request)
        {
            if (request.GetType().Name == "RetrieveMultipleRequest")
            {
                RetrieveMultipleResponse response = new RetrieveMultipleResponse();
                EntityCollection         result   = RetrieveMultiple((( RetrieveMultipleRequest )request).Query);
                response.Results["EntityCollection"] = result;
                return(response);
            }
            else if (request.GetType().Name == "RetrieveRequest")
            {
                RetrieveResponse response        = new RetrieveResponse();
                RetrieveRequest  retrieveRequest = ( RetrieveRequest )request;
                EntityReference  target          = retrieveRequest.Target;


                if (target.GetType().Name == "TargetRetrieveDynamic")
                {
                    /*
                     * TargetRetrieveDynamic trd = ( TargetRetrieveDynamic )target;
                     *      response.Entity = Retrieve( trd.EntityName, trd.EntityId, retrieveRequest.ColumnSet );
                     */
                }


                // TODO: entity is readonly .. will have to set this with reflection
                // response.Entity = Retrieve( target.LogicalName, target.Id, retrieveRequest.ColumnSet );

                else
                {
                    // request sent using a specific strongly-typed business entity
                    // rather than a DynamicEntity
                    throw new NotImplementedException();
                }
                return(response);
            }
            else if (request.GetType().Name == "CreateRequest")
            {
                CreateResponse response = new CreateResponse();
                Guid           result   = Create((( CreateRequest )request).Target);
                response.Results["id"] = result;
                return(response);
            }
            else if (request.GetType().Name == "UpdateRequest")
            {
                UpdateResponse response = new UpdateResponse();
                Update((( UpdateRequest )request).Target);
                return(response);
            }
            else
            {
                throw new NotImplementedException();
            }
        }