diff --git a/translators/nativy/nis_offerrequest.xml b/translators/nativy/nis_offerrequest.xml
deleted file mode 100644
index 7665b4b..0000000
--- a/translators/nativy/nis_offerrequest.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<CreateOffer xmlns="https://www.nativy.com/nis">
-  <requ>
-    <xs:schema id="offerrequest" targetNamespace="http://www.nativy.com/nis"
-      xmlns:mstns="http://www.nativy.com/nis" xmlns="http://www.nativy.com/nis"
-      xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
-      attributeFormDefault="qualified" elementFormDefault="qualified">
-      <xs:element name="offerrequest" msdata:IsDataSet="true"
-        msdata:Locale="en-US">
-        <xs:complexType>
-          <xs:choice minOccurs="0" maxOccurs="unbounded">
-            <xs:element name="customer">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="customerEmail" type="xs:string"
-                    minOccurs="0" msdata:Ordinal="0" />
-                  <xs:element name="customerFirstName" type="xs:string"
-                    minOccurs="0" msdata:Ordinal="1" />
-                  <xs:element name="customerLastName" type="xs:string"
-                    minOccurs="0" msdata:Ordinal="2" />
-                </xs:sequence>
-                <xs:attribute name="customerId" form="unqualified"
-                  type="xs:string" />
-              </xs:complexType>
-            </xs:element>
-            <xs:element name="languages">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="language" minOccurs="0" maxOccurs="unbounded">
-                    <xs:complexType>
-                      <xs:attribute name="langCode" form="unqualified"
-                        type="xs:string" />
-                    </xs:complexType>
-                  </xs:element>
-                </xs:sequence>
-                <xs:attribute name="primaryLangCode" form="unqualified"
-                  type="xs:string" />
-              </xs:complexType>
-            </xs:element>
-            <xs:element name="textblocks">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="textblock" minOccurs="0"
-                    maxOccurs="unbounded">
-                    <xs:complexType>
-                      <xs:sequence>
-                        <xs:element name="description" nillable="true"
-                          minOccurs="0" maxOccurs="unbounded">
-                          <xs:complexType>
-                            <xs:simpleContent msdata:ColumnName="description_Text"
-                              msdata:Ordinal="1">
-                              <xs:extension base="xs:string">
-                                <xs:attribute name="langCode" form="unqualified"
-                                  type="xs:string" />
-                              </xs:extension>
-                            </xs:simpleContent>
-                          </xs:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                      <xs:attribute name="code" form="unqualified"
-                        type="xs:string" />
-                      <xs:attribute name="label" form="unqualified"
-                        type="xs:string" />
-                      <xs:attribute name="category" form="unqualified"
-                        msdata:Caption="label" type="xs:string" />
-                    </xs:complexType>
-                  </xs:element>
-                </xs:sequence>
-              </xs:complexType>
-            </xs:element>
-            <xs:element name="settings">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="emailCallbackLink" type="xs:string"
-                    default="" minOccurs="0" />
-                </xs:sequence>
-              </xs:complexType>
-            </xs:element>
-          </xs:choice>
-        </xs:complexType>
-      </xs:element>
-    </xs:schema>
-    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
-      xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
-      <offerrequest xmlns="http://www.nativy.com/nis">
-        <customer diffgr:id="customer1" msdata:rowOrder="0"
-          diffgr:hasChanges="inserted" customerId="mailto:demo@nativy.com">
-          <customerEmail>!customerEmail</customerEmail>
-          <customerFirstName>!customerFirstName</customerFirstName>
-          <customerLastName>!customerLastName</customerLastName>
-        </customer>
-        <languages diffgr:id="languages1" msdata:rowOrder="0"
-          diffgr:hasChanges="inserted" primaryLangCode="!primaryLangCode"
-          msdata:hiddenlanguages_Id="0">
-          <language diffgr:id="language1" msdata:rowOrder="0"
-            diffgr:hasChanges="inserted" langCode="!langCode"
-            msdata:hiddenlanguages_Id="0" />
-        </languages>
-        <textblocks diffgr:id="textblocks1" msdata:rowOrder="0"
-          diffgr:hasChanges="inserted" msdata:hiddentextblocks_Id="0">
-          !textblocks
-        </textblocks>
-        <settings diffgr:id="settings1" msdata:rowOrder="0"
-          diffgr:hasChanges="inserted">
-          <emailCallbackLink>!emailCallbackLink</emailCallbackLink>
-        </settings>
-      </offerrequest>
-    </diffgr:diffgram>
-  </requ>
-</CreateOffer>
\ No newline at end of file
diff --git a/translators/nativy/nis_offerrequest_sample.xml b/translators/nativy/nis_offerrequest_sample.xml
deleted file mode 100644
index 3bea3b9..0000000
--- a/translators/nativy/nis_offerrequest_sample.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-﻿<CreateOffer xmlns="https://www.nativy.com/nis">
-<requ>
-<offerrequest xmlns="http://www.nativy.com/nis">
-  <settings>
-    <emailCallbackLink>https://www.yourapplication.com/nisinterface/gettranslation</emailCallbackLink>
-  </settings>
-  <customer customerId="mailto:demo@nativy.com">
-    <customerEmail>demo@nativy.com</customerEmail>
-    <customerFirstName>Demofirstname</customerFirstName>
-    <customerLastName>Demolastname</customerLastName>
-  </customer>
-  <languages primaryLangCode="de-DE">
-    <language langCode="en" />
-  </languages>
-  <textblocks>
-    <textblock code="faq_question1" label="Wie funktioniert nativy?">
-      <description langCode="de-DE">
-        nativy hat ein System entwickelt, um den/die ideale ÜbersetzerIn für jeden Auftrag zu finden. KundInnen können dabei ihre individuellen Kriterien in der Suche nach dem/der idealen ÜbersetzerIn einbringen. nativy übernimmt in dem gesamten Prozess die wichtigsten administrativen Aufgaben, um seinen NutzerInnen das Leben etwas zu erleichtern und die Zusammenarbeit zu beschleunigen. nativy verrechnet seinen KundInnen das von dem/der ÜbersetzerIn festgelegte Honorar inklusive eines geringfügigen Vermittlungsaufschlags.
-      </description>
-    </textblock>
-    <textblock code="faq_question2" label="Wer übersetzt bei nativy?">
-      <description langCode="de-DE">
-        Nur professionelle ÜbersetzerInnen werden bei nativy zugelassen. Übersetzungen in die Muttersprache werden bevorzugt. Die Qualifikationen jedes/r ÜbersetzerIn werden durch nativy geprüft.
-      </description>
-    </textblock>
-    <textblock code="faq_question3" label="Stehen AuftraggeberInnen und ÜbersetzerInnen in direktem Kontakt?">
-      <description langCode="de-DE">
-        Ja, auf der Webseite von nativy können Kurznachrichten zu den jeweiligen Aufträgen ausgetauscht werden.
-      </description>
-    </textblock>
-  </textblocks>
-</offerrequest>
-</requ>
-</CreateOffer>
\ No newline at end of file
diff --git a/translators/nativy/nis_offerrequest_sample_good.xml b/translators/nativy/nis_offerrequest_sample_good.xml
deleted file mode 100644
index f7dd03a..0000000
--- a/translators/nativy/nis_offerrequest_sample_good.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-<CreateOffer xmlns="https://www.nativy.com/nis">
-	<requ>
-		<xs:schema id="offerrequest" targetNamespace="http://www.nativy.com/nis"
-			xmlns:mstns="http://www.nativy.com/nis" xmlns="http://www.nativy.com/nis"
-			xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
-			attributeFormDefault="qualified" elementFormDefault="qualified">
-			<xs:element name="offerrequest" msdata:IsDataSet="true"
-				msdata:Locale="en-US">
-				<xs:complexType>
-					<xs:choice minOccurs="0" maxOccurs="unbounded">
-						<xs:element name="customer">
-							<xs:complexType>
-								<xs:sequence>
-									<xs:element name="customerEmail" type="xs:string"
-										minOccurs="0" msdata:Ordinal="0" />
-									<xs:element name="customerFirstName" type="xs:string"
-										minOccurs="0" msdata:Ordinal="1" />
-									<xs:element name="customerLastName" type="xs:string"
-										minOccurs="0" msdata:Ordinal="2" />
-								</xs:sequence>
-								<xs:attribute name="customerId" form="unqualified"
-									type="xs:string" />
-							</xs:complexType>
-						</xs:element>
-						<xs:element name="languages">
-							<xs:complexType>
-								<xs:sequence>
-									<xs:element name="language" minOccurs="0" maxOccurs="unbounded">
-										<xs:complexType>
-											<xs:attribute name="langCode" form="unqualified"
-												type="xs:string" />
-										</xs:complexType>
-									</xs:element>
-								</xs:sequence>
-								<xs:attribute name="primaryLangCode" form="unqualified"
-									type="xs:string" />
-							</xs:complexType>
-						</xs:element>
-						<xs:element name="textblocks">
-							<xs:complexType>
-								<xs:sequence>
-									<xs:element name="textblock" minOccurs="0"
-										maxOccurs="unbounded">
-										<xs:complexType>
-											<xs:sequence>
-												<xs:element name="description" nillable="true"
-													minOccurs="0" maxOccurs="unbounded">
-													<xs:complexType>
-														<xs:simpleContent msdata:ColumnName="description_Text"
-															msdata:Ordinal="1">
-															<xs:extension base="xs:string">
-																<xs:attribute name="langCode" form="unqualified"
-																	type="xs:string" />
-															</xs:extension>
-														</xs:simpleContent>
-													</xs:complexType>
-												</xs:element>
-											</xs:sequence>
-											<xs:attribute name="code" form="unqualified"
-												type="xs:string" />
-											<xs:attribute name="label" form="unqualified"
-												type="xs:string" />
-											<xs:attribute name="category" form="unqualified"
-												msdata:Caption="label" type="xs:string" />
-										</xs:complexType>
-									</xs:element>
-								</xs:sequence>
-							</xs:complexType>
-						</xs:element>
-						<xs:element name="settings">
-							<xs:complexType>
-								<xs:sequence>
-									<xs:element name="emailCallbackLink" type="xs:string"
-										default="" minOccurs="0" />
-								</xs:sequence>
-							</xs:complexType>
-						</xs:element>
-					</xs:choice>
-				</xs:complexType>
-			</xs:element>
-		</xs:schema>
-		<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
-			xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
-			<offerrequest xmlns="http://www.nativy.com/nis">
-				<customer diffgr:id="customer1" msdata:rowOrder="0"
-					diffgr:hasChanges="inserted" customerId="mailto:demo@nativy.com">
-					<customerEmail>demo@nativy.com</customerEmail>
-					<customerFirstName>Demofirstname</customerFirstName>
-					<customerLastName>Demolastname</customerLastName>
-				</customer>
-				<languages diffgr:id="languages1" msdata:rowOrder="0"
-					diffgr:hasChanges="inserted" primaryLangCode="de-DE"
-					msdata:hiddenlanguages_Id="0">
-					<language diffgr:id="language1" msdata:rowOrder="0"
-						diffgr:hasChanges="inserted" langCode="en"
-						msdata:hiddenlanguages_Id="0" />
-				</languages>
-				<textblocks diffgr:id="textblocks1" msdata:rowOrder="0"
-					diffgr:hasChanges="inserted" msdata:hiddentextblocks_Id="0">
-					<textblock diffgr:id="textblock1" msdata:rowOrder="0"
-						diffgr:hasChanges="inserted" code="faq_question1" label="Wie funktioniert nativy?"
-						msdata:hiddentextblock_Id="0" msdata:hiddentextblocks_Id="0">
-						<description diffgr:id="description1" msdata:rowOrder="0"
-							diffgr:hasChanges="inserted" langCode="de-DE"
-							msdata:hiddentextblock_Id="0">
-							nativy hat ein System entwickelt, um den/die ideale ÜbersetzerIn für
-							jeden Auftrag zu finden. KundInnen können dabei ihre
-							individuellen Kriterien in der Suche nach dem/der idealen
-							ÜbersetzerIn einbringen. nativy übernimmt in dem gesamten
-							Prozess die wichtigsten administrativen Aufgaben, um seinen
-							NutzerInnen das Leben etwas zu erleichtern und die
-							Zusammenarbeit zu beschleunigen. nativy verrechnet seinen
-							KundInnen das von dem/der ÜbersetzerIn festgelegte Honorar
-							inklusive eines geringfügigen Vermittlungsaufschlags.
-								</description>
-					</textblock>
-					<textblock diffgr:id="textblock2" msdata:rowOrder="1"
-						diffgr:hasChanges="inserted" code="faq_question2" label="Wer übersetzt bei nativy?"
-						msdata:hiddentextblock_Id="1" msdata:hiddentextblocks_Id="0">
-						<description diffgr:id="description2" msdata:rowOrder="1"
-							diffgr:hasChanges="inserted" langCode="de-DE"
-							msdata:hiddentextblock_Id="1">
-							Nur professionelle ÜbersetzerInnen werden bei nativy zugelassen.
-							Übersetzungen in die Muttersprache werden bevorzugt. Die
-							Qualifikationen jedes/r ÜbersetzerIn werden durch nativy
-							geprüft.
-          </description>
-					</textblock>
-					<textblock diffgr:id="textblock3" msdata:rowOrder="2"
-						diffgr:hasChanges="inserted" code="faq_question3"
-						label="Stehen AuftraggeberInnen und ÜbersetzerInnen in direktem Kontakt?"
-						msdata:hiddentextblock_Id="2" msdata:hiddentextblocks_Id="0">
-						<description diffgr:id="description3" msdata:rowOrder="2"
-							diffgr:hasChanges="inserted" langCode="de-DE"
-							msdata:hiddentextblock_Id="2">
-							Ja, auf der Webseite von nativy können Kurznachrichten zu den
-							jeweiligen Aufträgen ausgetauscht werden.
-          </description>
-					</textblock>
-				</textblocks>
-				<settings diffgr:id="settings1" msdata:rowOrder="0"
-					diffgr:hasChanges="inserted">
-					<emailCallbackLink>https://www.yourapplication.com/nisinterface/gettranslation
-					</emailCallbackLink>
-				</settings>
-			</offerrequest>
-		</diffgr:diffgram>
-	</requ>
-</CreateOffer>
\ No newline at end of file
diff --git a/translators/nativy/tmgmt_nativy.install b/translators/nativy/tmgmt_nativy.install
new file mode 100644
index 0000000..48535a3
--- /dev/null
+++ b/translators/nativy/tmgmt_nativy.install
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * @file
+ * Installation hooks for TMGMT Nativy module.
+ */
+
+/**
+ * Implements hook_schema().
+ */
+function tmgmt_nativy_schema() {
+  $schema['tmgmt_nativy_log'] = array(
+    'description' => 'Logs nativy requests',
+    'fields' => array(
+      'lid' => array(
+        'type' => 'serial',
+        'description' => 'Unique identifier',
+        'not null' => TRUE,
+      ),
+      'url' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'description' => 'The executed request',
+        'default' => '',
+      ),
+      'request' => array(
+        'type' => 'text',
+        'description' => 'The sent request body',
+      ),
+      'response_code' => array(
+        'type' => 'int',
+        'description' => 'The response code',
+        'default' => 0,
+      ),
+      'response_headers' => array(
+        'type' => 'text',
+        'description' => 'Received response header',
+      ),
+      'response_data' => array(
+        'type' => 'text',
+        'description' => 'Received response data',
+      ),
+      'time' => array(
+        'type' => 'float',
+        'description' => 'The time it took for the request',
+      ),
+    ),
+    'primary key' => array('lid'),
+  );
+  return $schema;
+}
diff --git a/translators/nativy/tmgmt_nativy.module b/translators/nativy/tmgmt_nativy.module
index 0b29a5f..db74095 100755
--- a/translators/nativy/tmgmt_nativy.module
+++ b/translators/nativy/tmgmt_nativy.module
@@ -9,12 +9,12 @@
  * Implements hook_menu().
  */
 function tmgmt_nativy_menu() {
-  // @todo menu callback for order complete callback
-  $items['nativy/callback'] = array(
+  $items['tmgmt/nativy/callback/%tmgmt_job'] = array(
     'title' => 'Nativy Notification',
     'description' => 'Callback for the completion notification of a translation job.',
     'type' => MENU_CALLBACK,
     'page callback' => 'tmgmt_nativy_process_callback',
+    'page arguments' => array(3),
     'access callback' => TRUE,
   );
   return $items;
@@ -39,39 +39,45 @@ function tmgmt_nativy_tmgmt_translator_plugin_info() {
  *
  * @TODO Real processing. For now we just log whatever comes in.
  */
-function tmgmt_nativy_process_callback() {
-  $items[] = t('Checking for your translation from Nativy.');
-  watchdog('nativy', 'Callback REQUEST.  <br /><pre>!post</pre>', array('!post' => print_r($_REQUEST, TRUE)));
-  // Get the order id
-  if (isset($_REQUEST['orderid'])) {
-    $orderid = $_REQUEST['orderid'];
-    $items[] = t('Your order id is @orderid', array('@orderid' => $orderid));
-    // @todo tmgmt_job_load_multiple() doesn't seem to work for this.
-    if ($jobs = entity_load('tmgmt_job', FALSE, array('reference' => $orderid))) {
-      $job = reset($jobs);
-      $controller = $job->getTranslatorController();
-      if (!is_a($controller, 'TMGMTNativyTranslatorController')) {
-        $items[] = t('The job was not assigned to Nativy.');
-      }
-      elseif ($controller->retrieveTranslation($job)) {
-        $items[] = t('Your translation has been retrieved successfully.');
-        drupal_set_message(t('Retrieved translation for job @jobid.', array('@jobid' => $job->tjid)));
-      }
-      else {
-        drupal_set_message(t('We cannot retrieve your translation.'), 'warning');
-      }
+function tmgmt_nativy_process_callback(TMGMTJob $job) {
+  $controller = $job->getTranslatorController();
+  if (!($controller instanceof TMGMTNativyTranslatorPluginController)) {
+    $job->addMessage('Job does not belong to nativy.', array(), 'error');
+    return;
+  }
 
-    }
-    else {
-      drupal_set_message(t('Cannot find a translation job matching that order id'), 'warning');
+  // Verify the validity of this request.
+  if (!empty($_GET['timestamp']) && !empty($_GET['api_sign'])) {
+    if (!$controller->verify($job->getTranslator(), $_GET['timestamp'], $_GET['api_sign'])) {
+      $job->addMessage('Callback request has invalid api sign', array(), 'error');
+      return;
     }
   }
   else {
-    drupal_set_message(t('We cannot find your order id.'), 'error');
+    $job->addMessage('Callback request is missing api sign.', array(), 'error');
+    return;
+  }
+
+  // Record payment success message.
+  if (!empty($_GET['paid']) && $_GET['paid']) {
+    $job->addMessage('Payment successfully recorded.');
+    return;
+  }
+
+  if ($controller->retrieveTranslation($job)) {
+    $job->addMessage('Successfully retrieved translation.');
+  }
+  else {
+    $job->addMessage('Failed to retrieve the translation.', 'warning');
   }
-  $build['steps'] = array(
-    '#theme' => 'item_list',
-    '#items' => $items,
-  );
-  return $build;
 }
+
+/**
+ * Save the chosen job settings.
+ */
+function tmgmt_nativy_job_settings_submit($form, &$form_state) {
+  $job = $form_state['tmgmt_job'];
+  $job = entity_ui_form_submit_build_entity($form, $form_state);
+  dpm($job);
+  $job->save();
+}
\ No newline at end of file
diff --git a/translators/nativy/tmgmt_nativy.plugin.inc b/translators/nativy/tmgmt_nativy.plugin.inc
index b3806aa..4e6ea39 100755
--- a/translators/nativy/tmgmt_nativy.plugin.inc
+++ b/translators/nativy/tmgmt_nativy.plugin.inc
@@ -10,280 +10,238 @@
  */
 class TMGMTNativyTranslatorPluginController extends TMGMTDefaultTranslatorPluginController {
 
-  /**
-   * Implements TMGMTTranslatorPluginControllerInterface::isAvailable().
-   */
-  public function isAvailable(TMGMTTranslator $translator) {
-    if ($translator->getSetting('api_user_name') && $translator->getSetting('api_password')) {
-      return TRUE;
-    }
-    return FALSE;
-  }
+  protected $live_site = 'http://nativy.com/';
+  protected $test_site = 'http://test.nativy.com/';
 
   /**
-   * Implements TMGMTTranslatorPluginControllerInterface::requestTranslation().
+   * Call a REST method from Nativy Connect.
    *
-   * Here we will acutally query source and get translations.
+   * @param $translator
+   *   Translator object.
+   * @param $method
+   *   The REST method to call.
+   * @param $query
+   *   Arguments for the method.
+   *
+   * @return
+   *   The service response.
    */
-  public function requestTranslation(TMGMTJob $job) {
-    // This is hexadecimal order id, we'd need to store it in some field to search.
-    $job->reference = $job->settings['orderid'];
-    $job->submitted(t('Job submitted to Nativy for translation. You will get an e-mail when the translation is ready.'));
+  protected function get(TMGMTTranslator $translator, $method, array $query = array()) {
+    $data = $this->request(url($this->getURL($translator, $method), array('query' => $query, 'absolute' => TRUE)));
+    return json_decode($data);
   }
 
   /**
-   * Retrieve job when ready (we got an email with a link?)
+   * Executes and logs a request.
+   *
+   * @param $url
+   *   The URL that should be requested.
+   * @param $options
+   *   Options to pass to drupal_http_request().
+   *
+   * @return
+   *   The JSON
    */
-  public function retrieveTranslation(TMGMTJob $job) {
-    if ($document = $this->nativyRetrieveTranslation($job)) {
-      $translation = array();
-      foreach ($document->offerrequest->textblocks as $textblock) {
-        $block = $textblock->textblock;
-        $code = (string) $block['code'];
-        $label = (string) $block['label'];
-        $text = (string) $block->description;
-        $translation[$code] = array(
-          '#text' => $text,
-          '#label' => $label,
-        );
+  protected function request($url, $options = array()) {
+    $start = microtime(TRUE);
+    $request = drupal_http_request($url, $options);
+
+    $headers = '';
+    if (!empty($request->headers)) {
+      foreach ($request->headers as $name => $value) {
+        $headers .= "$name: $value\n";
       }
-      $job->addTranslatedData(tmgmt_unflatten_data($translation));
-      $job->needsReview('Got translation from Nativy');
-      return TRUE;
     }
-    // @todo Implement retrieve translation
-    return FALSE;
+
+    db_insert('tmgmt_nativy_log')
+      ->fields(array(
+        'url' => $url,
+        'request' => $request->request,
+        'response_code' => $request->code,
+        'response_data' => isset($request->data) ? $request->data : '',
+        'response_headers' => $headers,
+        'time' => microtime(TRUE) - $start,
+      ))
+      ->execute();
+
+    return isset($request->data) ? $request->data : '';
   }
 
   /**
-   * Implements TMGMTTranslatorPluginControllerInterface::getSupportedTargetLanguages().
+   * Executes a post request.
+   *
+   * @param $translator
+   *   The translator entity.
+   * @param $method
+   *   The method to call.
+   * @param $query
+   *   The POST data to submit.
+   *
+   * @return
+   *   The returned, json decoded object.
    */
-  public function getSupportedTargetLanguages(TMGMTTranslator $translator, $source_language) {
-    // @todo: Implement this properly.
-    return parent::getSupportedTargetLanguages($translator, $source_language);
+  protected function post(TMGMTTranslator $translator, $method, $query = array()) {
+    $url = url($this->getURL($translator, $method), array($query));
+    $options = array(
+      'headers' => array(
+        'Content-type' => 'application/json',
+      ),
+      'method' => 'POST',
+      'data' => $query,
+    );
+    return json_decode($this->request($url, $options));
   }
 
   /**
-   * Defines plugin job settings form.
+   * Returns the URL for a given method.
    *
-   * @param $form array
-   * @param $form_state array
-   * @return array
-   *   Settings form.
+   * @param $translator
+   *   The translator entity.
+   * @param $method
+   *   The method to call.
+   *
+   * @return
+   *   The absolute URL to call.
    */
-  public function checkoutSettingsForm($form, &$form_state, TMGMTJob $job) {
-    if ($iframe_url = $this->nativyCreateOffer($job)) {
-      // This should look like http://test.nativy.com/client/createorder.aspx?token=a19fd9f9-4bdc-4396-aebf-277fafd9c42a&amp;orderid=f1446707-ae2f-499e-a08e-47131533a88d
-      $parts = explode('orderid=', $iframe_url);
-      if (count($parts) == 2 && ($orderid = $parts[1])) {
-        $settings['help']['#markup'] =
-          '<p>' . t('You need to complete your order through Nativy pages below and then click on <em>Submit to translator</em>.') . '</p>';
-
-        $settings['orderid'] = array('#type' => 'value', '#value' => $orderid);
-        // If we complete the order we should be at http://test.nativy.com/client/nisfinish.aspx
-        // @TODO The idea is we add a hidden variable and check whether we've reached that page
-        $settings['nativyurl'] = array('#type' => 'hidden', '#value' => $iframe_url);
-        $settings['iframe']['#markup'] = "<iframe width=\"800\" height=\"600\" src=\"$iframe_url\"></iframe>";
-        return $settings;
-      }
-    }
-    // Something went wrong, just print message and get out.
-    $settings['error']['#markup'] =
-      '<p>' . t('Cannot authenticate to Nativy server. Pleaser review your user name and password.') . '</p>';
-    return $settings;
+  protected function getURL(TMGMTTranslator $translator, $method) {
+    $url = $translator->getSetting('use_test') ? $this->test_site : $this->live_site;
+    $url .= 'connect/' . $method;
+    return $url;
   }
 
   /**
-   * Build text as xml
+   * Returns an array of the required authentication query arguments.
+   *
+   * @param $translator
+   *   The translator entity.
    */
-  protected function nativyBuildText($job) {
-    $output = '';
-    $template = '<textblock diffgr:id="textblock!number" msdata:rowOrder="!order" code="!code" label="!label" msdata:hiddentextblock_Id="!order">';
-    $template .= '<description langCode="!langCode">';
-    $template .= '!text';
-    $template .= '</description>';
-    $template .= "</textblock>\n";
-    $data['!langCode'] = $job->source_language;
-    $text = tmgmt_flatten_data($job->getData());
-    $number = $order = 0;
-    foreach ($text as $key => $item) {
-      $data['!order'] = $order;
-      $data['!number'] = $number;
-      $data['!code'] = $key;
-      $data['!label'] = $item['#label'];
-      $data['!text'] = $item['#text'];
-      $output .= strtr($template, $data);
-      $number++;
-      $order++;
-    }
-    return $output;
+  protected function getAuthenticationQuery(TMGMTTranslator $translator) {
+    $api_sign = hash_hmac('sha1', REQUEST_TIME, $translator->getSetting('private_key'));
+    return array(
+      'api_key' => $translator->getSetting('api_key'),
+      'api_sign' => $api_sign,
+      'timestamp' => REQUEST_TIME,
+    );
   }
 
   /**
-   * Create offer and return iframe URL
+   * Verifies the api_sign.
+   *
+   * @param $translator
+   *   The translator entity.
+   * @param $timestamp
+   *   The timestamp that has been signed.
+   * @param $api_sign
+   *   The sign.
+   *
+   * @return
+   *   TRUE if the sign is correct.
    */
-  protected function nativyRetrieveTranslation($job) {
-    $orderid = $job->reference;
-    $translator = $job->getTranslator();
-    $client = $this->nativySoapClient();
-    // First try authentication and if successful, go for the offer.
-    $authenticated = $client->authenticate($translator->getSetting('api_user_name'), $translator->getSetting('api_password'));
-    if ($authenticated) {
-      try {
-        $response = $client->GetOffer(array('OrderId' => $orderid));
-        $prefix = '<?xml version="1.0" standalone="yes"?>';
-        $content = $response->GetOfferResult->any;
-        // Since response is not valid XML we take out the nonsense par of it (schema)
-        // Note it has nothing to do with the documented theoretical response.
-        $content = array_pop(explode('</xs:schema>', $content));
-        dpm($content);
-        $document = new SimpleXMLElement($content);
-        return $document;
-      } catch (Exception $e) {
-        dpm($e, 'Exception');
-      }
-    }
-    //$content = file_get_contents(drupal_get_path('module', 'tmgmt_nativy') . '/nis_getoffer_response.xml');
-    // $document = new SimpleXMLElement($content);
-    // Something went wrong, just print message and get out.
-    $client->printDebug();
-    return FALSE;
+  public function verify(TMGMTTranslator $translator, $timestamp, $api_sign) {
+    return $api_sign == hash_hmac('sha1', $timestamp, $translator->getSetting('private_key'));
   }
 
   /**
-   * Create offer and return iframe URL
+   * Implements TMGMTTranslatorPluginControllerInterface::isAvailable().
    */
-  protected function nativyCreateOffer($job) {
-    $translator = $job->getTranslator();
-    $client = $this->nativySoapClient();
-    // First try authentication and if successful, go for the offer.
-    $authenticated = $client->authenticate($translator->getSetting('api_user_name'), $translator->getSetting('api_password'));
-    if ($authenticated) {
-      // Build offer parameters for straight text replacement
-      // Customer data
-      $data['!customerEmail'] = variable_get('site_mail', ini_get('sendmail_from'));
-      $data['!customerFirstName'] = 'Drupal';
-      $data['!customerLastName'] = 'Translator';
-      // Languages
-      $data['!primaryLangCode'] = $job->source_language; //"de-DE";
-      $data['!langCode'] = $job->target_language; //"en";
-      // Add text
-      $data['!textblocks'] = $this->nativyBuildText($job);
-      $data['!emailCallbackLink'] = url('nativy/callback', array('absolute' => TRUE));
-      //$template = file_get_contents(drupal_get_path('module', 'tmgmt_nativy') . '/nis_offerrequest_sample_good.xml');
-      $template = file_get_contents(drupal_get_path('module', 'tmgmt_nativy') . '/nis_offerrequest.xml');
-      $template = strtr($template, $data);
-      $response = $client->xmlRequest('CreateOffer', $template);
-      if ($response) {
-        // This should look like http://test.nativy.com/client/createorder.aspx?token=a19fd9f9-4bdc-4396-aebf-277fafd9c42a&amp;orderid=f1446707-ae2f-499e-a08e-47131533a88d
-        $iframe_url = $response->CreateOfferResult;
-        return $iframe_url;
-      }
+  public function isAvailable(TMGMTTranslator $translator) {
+    if ($translator->getSetting('api_key') && $translator->getSetting('private_key')) {
+      return TRUE;
     }
-    // Something went wrong, just print message and get out.
-    $client->printDebug();
     return FALSE;
   }
 
   /**
-   * Send request to nativy, get response
-   */
-  protected function nativySoapRequest($method, $params) {
-    $client = $this->nativySoapClient();
-    $response = $client->$method($params);
-    $client->printDebug();
-    return $response;
-  }
-
-  /**
-   * Get SOAP client for Nativy service
+   * Implements TMGMTTranslatorPluginControllerInterface::requestTranslation().
+   *
+   * Here we will acutally query source and get translations.
    */
-  protected function nativySoapClient() {
-    static $client;
-    if (!isset($client)) {
-      $client = new TMGMTNativySoapClient(
-          drupal_get_path('module', 'tmgmt_nativy') . '/tmgmt_nativy_test.wsdl',
-          //drupal_get_path('module', 'tmgmt_nativy') . '/tmgmt_nativy_live.wsdl',
-          array('trace' => TRUE)
-      );
-      // For debugging we can pull API information from the WSDL
-      //dpm($client->__getFunctions(), 'Functions');
-      //dpm($client->__getTypes(), 'Types');
+  public function requestTranslation(TMGMTJob $job) {
+    $rank_details = $job->getSetting('rank_details');
+    $redirect_path = current_path();
+    // Attempt to find a better redirect path if tmgmt_ui module is available.
+    if (module_exists('tmgmt_ui')) {
+      $queue_destination = tmgmt_ui_redirect_queue_destination();
+      $redirect_path = $queue_destination ? $queue_destination : $redirect_path;
     }
-    return $client;
+    $payment_link = $rank_details[$job->getSetting('rank')]['payment_link'] . '&returnlink=' . urlencode(url($redirect_path, array('absolute' => TRUE)));
+    $job->reference = $rank_details[$job->getSetting('rank')]['orderId'];
+    $job->submitted('Proceed to the <a href="!url">payment page</a> to submit this job.', array('!url' => $payment_link));
   }
 
-}
-
-/**
- * Nativy SOAP client
- */
-class TMGMTNativySoapClient extends SoapClient {
-
   /**
-   * Run request from full raw XML body
+   * Returns an order from a job
    */
-  public function xmlRequest($method, $xmldata) {
-    $soapvar = new SoapVar($xmldata, XSD_ANYXML);
+  public function getOrder(TMGMTJob $job) {
+    $order = $this->getAuthenticationQuery($job->getTranslator());
+    $order['callbacklink'] = url('tmgmt/nativy/callback/' . $job->tjid, array('absolute' => TRUE));
+    $order['language_from'] = $job->source_language;
+    $order['language_to'] = $job->target_language;
+    $order['nativy_partner_name'] = 'Drupal TMGMT';
+
+    // Add selected options.
+    foreach (array('short_description', 'long_description', 'correction_required') as $option) {
+      $order[$option] = $job->getSetting($option);
+    }
 
-    $response = FALSE;
-    try {
-      $response = $this->$method($soapvar);
-    } catch (Exception $e) {
-      dpm($e, 'Exception');
+    $data = array_filter(tmgmt_flatten_data($job->getData()), '_tmgmt_filter_data');
+    $texts = array();
+    foreach ($data as $key => $text) {
+      $texts[] = array(
+        'Key' => $key,
+        'Value' => $text['#text'],
+      );
     }
+    $order['text_from'] = $texts;
+
+    $response = $this->post($job->getTranslator(), 'order', json_encode($order));
     return $response;
   }
 
   /**
-   * Authenticate to the service
+   * Retrieves an order object from the Nativy service.
+   *
+   * @param TMGMTJob $job
+   *   The job for which the order should be retrieved.
+   *
+   * @return
+   *   The nativy order object.
    */
-  public function authenticate($user, $pass) {
-    try {
-      $this->setAuthHeader(array(
-        'Username' => $user,
-        'Password' => $pass,
-      ));
-      $response = $this->AuthenticateUser();
-      $token = $response->AuthenticateUserResult;
-      $this->setAuthHeader(array('AuthenticatedToken' => $token));
-      return TRUE;
-    } catch (Exception $e) {
-      $this->debug();
-    }
+  public function nativyRetrieveOrder(TMGMTJob $job) {
+    $query = $this->getAuthenticationQuery($job->getTranslator());
+    return $this->get($job->getTranslator(), 'order/' . $job->reference, $query);
   }
 
   /**
-   * Set authentication header.
+   * Retrieve job when ready (we got an email with a link?)
    */
-  public function setAuthHeader($params) {
-    $rawheader = '<SecuredWebServiceHeader xmlns="https://www.nativy.com/nis">';
-    foreach ($params as $name => $value) {
-      $rawheader .= "<$name>$value</$name>";
+  public function retrieveTranslation(TMGMTJob $job) {
+    if ($document = $this->nativyRetrieveOrder($job)) {
+      $translation = array();
+      foreach ($document->text_to as $text) {
+        $key = $text->Key;
+        $text = $text->Value;
+        $translation[$key] = array(
+          '#text' => $text,
+        );
+      }
+      $job->addTranslatedData(tmgmt_unflatten_data($translation));
+      return TRUE;
     }
-    $rawheader .= '</SecuredWebServiceHeader>';
-    $soapvar = new SoapVar($rawheader, XSD_ANYXML);
-    $headers['SecuredWebServiceHeader'] = new SoapHeader(
-        'http://www.nativy.com/nis',
-        'SecuredWebServiceHeader',
-        $soapvar
-    );
-    $this->__setSoapHeaders(NULL);
-    $this->__setSoapHeaders($headers);
+    return FALSE;
   }
 
   /**
-   * Debug. Print out last request and response
+   * Implements TMGMTTranslatorPluginControllerInterface::getSupportedTargetLanguages().
    */
-  public function printDebug() {
-    dpm(array(
-      'Request' => $this->__getLastRequest(),
-      'RequestHeaders' => $this->__getLastRequestHeaders()
-      ), 'SOAP REQUEST');
-    dpm(array(
-      'Response' => $this->__getLastResponse(),
-      'ResponseHeaders' => $this->__getLastResponseHeaders()
-      ), 'SOAP RESPONSE');
+  public function getSupportedTargetLanguages(TMGMTTranslator $translator, $source_language) {
+    global $language;
+    $response = $this->get($translator, 'languages', array('language_short' => $language->language));
+    $languages = array();
+    foreach ($response as $language_row) {
+      $languages[$language_row->language_short] = $language_row->language_short;
+    }
+    return $languages;
   }
 
 }
diff --git a/translators/nativy/tmgmt_nativy.ui.inc b/translators/nativy/tmgmt_nativy.ui.inc
index b8b9b9e..154be44 100644
--- a/translators/nativy/tmgmt_nativy.ui.inc
+++ b/translators/nativy/tmgmt_nativy.ui.inc
@@ -14,18 +14,198 @@ class TMGMTNativyTranslatorUIController extends TMGMTDefaultTranslatorUIControll
    * Overrides TMGMTDefaultTranslatorUIController::pluginSettingsForm().
    */
   public function pluginSettingsForm($form, &$form_state, TMGMTTranslator $translator, $busy = FALSE) {
-    $form['api_user_name'] = array(
+    $form['api_key'] = array(
       '#type' => 'textfield',
-      '#title' => t('User name'),
-      '#default_value' => $translator->getSetting('api_user_name', ''),
+      '#title' => t('API key'),
+      '#default_value' => $translator->getSetting('api_key'),
+      '#description' => t('Please enter your Nativy connect API key.'),
     );
-    $form['api_password'] = array(
+    $form['private_key'] = array(
       '#type' => 'textfield',
-      '#title' => t('Password'),
-      '#default_value' => $translator->getSetting('api_password', ''),
+      '#title' => t('Private key'),
+      '#default_value' => $translator->getSetting('private_key'),
+      '#description' => t('Please enter your Nativy Private key.'),
+    );
+    $form['use_test'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Use the test environment'),
+      '#default_value' => $translator->getSetting('use_test'),
+      '#description' => t('Check to use the testing environment.'),
     );
     return parent::pluginSettingsForm($form, $form_state, $translator, $busy);
   }
 
+  protected function getJobSetting(TMGMTJob $job, $setting, $default = '') {
+    return isset($job->settings[$setting]) ? $job->settings[$setting] : $default;
+  }
+
+  /**
+   * Defines plugin job settings form.
+   *
+   * @param $form array
+   * @param $form_state array
+   * @return array
+   *   Settings form.
+   */
+  public function checkoutSettingsForm($form, &$form_state, TMGMTJob $job) {
+
+    $settings['requested'] = array(
+      '#type' => 'value',
+      '#value' => TRUE,
+    );
+
+    $settings['short_description'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Short description'),
+      '#default_value' => $this->getJobSetting($job, 'short_description'),
+    );
+
+    $settings['long_description'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Long description'),
+      '#default_value' => $this->getJobSetting($job, 'long_description'),
+    );
+
+    $settings['correction_required'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Require a corrector'),
+      '#description' => t('If checked, a corrector will be assigned to the order. A corrector proofreads the translation of the translator and makes suggestions to him if there is something incorrect with the translation.'),
+      '#default_value' => $this->getJobSetting($job, 'correction_required', FALSE),
+    );
+
+    $settings['request_order'] = array(
+      '#type' => 'submit',
+      '#value' => t('Request offer'),
+      '#valudate' => array('tmgmt_job_form_validate'),
+      '#submit' => array('tmgmt_nativy_job_settings_submit'),
+    );
+
+    if ($this->getJobSetting($job, 'requested', FALSE)) {
+      $response = $job->getTranslatorController()->getOrder($job);
+
+      if (empty($response)) {
+        drupal_set_message(t('Failed to retrieve an offer from Nativy.'), 'error');
+        return;
+      }
+
+      $options = array();
+      foreach ($response as $offer) {
+        $options[$offer->rank] = t('@name (@price EUR)', array('@name' =>  $offer->translator_firstname, '@price' => $offer->price_sum_gross));
+      }
+
+      $settings['rank'] = array(
+        '#type' => 'radios',
+        '#title' => t('Rank'),
+        '#options' => $options,
+        '#required' => TRUE,
+      );
+
+      foreach ($response as $offer) {
+        $details = array(
+          '#type' => 'fieldset',
+          '#title' => $offer->translator_firstname,
+          '#states' => array(
+            'visible' => array(
+              'input[name="settings[rank]"]' => array('value' => $offer->rank),
+            ),
+          ),
+        );
+
+        $details['orderId'] = array(
+          '#type' => 'value',
+          '#value' => $offer->orderid,
+        );
+
+        $details['image'] = array(
+          '#theme' => 'image',
+          '#path' => $offer->translator_picture_link,
+        );
+
+        if (!empty($offer->corrector_firstname)) {
+          $details['translator_price'] = array(
+            '#type' => 'item',
+            '#title' => t('Translator Price'),
+            '#markup' => t('@price EUR', array('@price' => $offer->price_translator_net)),
+          );
+
+          $details['corrector_name'] = array(
+            '#type' => 'item',
+            '#title' => t('Corrector name'),
+            '#markup' => check_plain($offer->corrector_firstname),
+          );
+          $details['corrector_image'] = array(
+            '#theme' => 'image',
+            '#path' => $offer->corrector_picture_link,
+          );
+
+          $details['corrector_price'] = array(
+            '#type' => 'item',
+            '#title' => t('Corrector price'),
+            '#markup' => t('@price EUR', array('@price' => $offer->price_corrector_net)),
+          );
+        }
+
+        $details['price'] = array(
+          '#type' => 'item',
+          '#title' => t('Price'),
+          '#markup' => t('@price EUR (including @tax EUR taxes)', array('@price' => $offer->price_sum_gross, '@tax' => $offer->price_sum_tax)),
+        );
+
+        $details['payment_link'] = array(
+          '#type' => 'value',
+          '#value' => $offer->payment_link,
+        );
+
+        $settings['rank_details'][$offer->rank] = $details;
+      }
+    }
+    return $settings;
+  }
+
+  /**
+   * Overrides TMGMTDefaultTranslatorUIController::pluginSettingsForm().
+   */
+  public function checkoutInfo(TMGMTJob $job) {
+    $label = $job->getTranslator()->label();
+    $form['#title'] = t('@translator translation job information', array('@translator' => $label));
+    $form['#type'] = 'fieldset';
+
+    if ($order = $job->getTranslatorController()->nativyRetrieveOrder($job)) {
+      $status = t('Unknown status');
+      switch ($order->status) {
+        case 'orders_status_open':
+          $status = t('Open');
+          break;
+        case 'orders_status_confirmationpending':
+          $status = t('Confirmation pending');
+          break;
+        case 'orders_status_inprogress':
+          $status = t('In progress');
+          break;
+        case 'orders_status_translationcomplete':
+          $status = t('Complete');
+          break;
+        case 'orders_status_canceled':
+          $status = t('Canceled');
+          break;
+      }
+
+      $form['status'] = array(
+        '#type' => 'item',
+        '#title' => t('Status'),
+        '#markup' => $status,
+      );
+    }
+    else {
+      $form['status'] = array(
+        '#type' => 'item',
+        '#title' => t('Status'),
+        '#markup' => t('Unable to retrieve order from Nativy.'),
+      );
+    }
+
+    return $form;
+  }
+
 }
 
diff --git a/translators/nativy/tmgmt_nativy_live.wsdl b/translators/nativy/tmgmt_nativy_live.wsdl
deleted file mode 100644
index 49d8149..0000000
--- a/translators/nativy/tmgmt_nativy_live.wsdl
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="https://www.nativy.com/nis" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="https://www.nativy.com/nis" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified" targetNamespace="https://www.nativy.com/nis">
-      <s:import namespace="http://www.nativy.com/nis"/>
-      <s:import schemaLocation="https://www.nativy.com/nis/nis.asmx?schema=offerrequest" namespace="http://www.nativy.com/nis"/>
-      <s:element name="AuthenticateUser">
-        <s:complexType/>
-      </s:element>
-      <s:element name="AuthenticateUserResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="AuthenticateUserResult" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="SecuredWebServiceHeader" type="tns:SecuredWebServiceHeader"/>
-      <s:complexType name="SecuredWebServiceHeader">
-        <s:sequence>
-          <s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string"/>
-          <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
-          <s:element minOccurs="0" maxOccurs="1" name="AuthenticatedToken" type="s:string"/>
-        </s:sequence>
-        <s:anyAttribute/>
-      </s:complexType>
-      <s:element name="CreateOffer">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="requ">
-              <s:complexType>
-                <s:sequence>
-                  <s:any namespace="http://www.nativy.com/nis"/>
-                </s:sequence>
-              </s:complexType>
-            </s:element>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="CreateOfferResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="CreateOfferResult" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="GetOffer">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="OrderId" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="GetOfferResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="GetOfferResult">
-              <s:complexType>
-                <s:sequence>
-                  <s:any namespace="http://www.nativy.com/nis"/>
-                </s:sequence>
-              </s:complexType>
-            </s:element>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="AuthenticateUserSoapIn">
-    <wsdl:part name="parameters" element="tns:AuthenticateUser"/>
-  </wsdl:message>
-  <wsdl:message name="AuthenticateUserSoapOut">
-    <wsdl:part name="parameters" element="tns:AuthenticateUserResponse"/>
-  </wsdl:message>
-  <wsdl:message name="AuthenticateUserSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSoapIn">
-    <wsdl:part name="parameters" element="tns:CreateOffer"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSoapOut">
-    <wsdl:part name="parameters" element="tns:CreateOfferResponse"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSoapIn">
-    <wsdl:part name="parameters" element="tns:GetOffer"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSoapOut">
-    <wsdl:part name="parameters" element="tns:GetOfferResponse"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:portType name="nisSoap">
-    <wsdl:operation name="AuthenticateUser">
-      <wsdl:input message="tns:AuthenticateUserSoapIn"/>
-      <wsdl:output message="tns:AuthenticateUserSoapOut"/>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <wsdl:input message="tns:CreateOfferSoapIn"/>
-      <wsdl:output message="tns:CreateOfferSoapOut"/>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <wsdl:input message="tns:GetOfferSoapIn"/>
-      <wsdl:output message="tns:GetOfferSoapOut"/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="nisSoap" type="tns:nisSoap">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="AuthenticateUser">
-      <soap:operation soapAction="https://www.nativy.com/nis/AuthenticateUser" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:AuthenticateUserSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <soap:operation soapAction="https://www.nativy.com/nis/CreateOffer" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:CreateOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <soap:operation soapAction="https://www.nativy.com/nis/GetOffer" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:GetOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:binding name="nisSoap12" type="tns:nisSoap">
-    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="AuthenticateUser">
-      <soap12:operation soapAction="https://www.nativy.com/nis/AuthenticateUser" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:AuthenticateUserSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <soap12:operation soapAction="https://www.nativy.com/nis/CreateOffer" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:CreateOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <soap12:operation soapAction="https://www.nativy.com/nis/GetOffer" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:GetOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="nis">
-    <wsdl:port name="nisSoap" binding="tns:nisSoap">
-      <soap:address location="https://www.nativy.com/nis/nis.asmx"/>
-    </wsdl:port>
-    <wsdl:port name="nisSoap12" binding="tns:nisSoap12">
-      <soap12:address location="https://www.nativy.com/nis/nis.asmx"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
diff --git a/translators/nativy/tmgmt_nativy_test.wsdl b/translators/nativy/tmgmt_nativy_test.wsdl
deleted file mode 100644
index d761de1..0000000
--- a/translators/nativy/tmgmt_nativy_test.wsdl
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="https://www.nativy.com/nis" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="https://www.nativy.com/nis" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified" targetNamespace="https://www.nativy.com/nis">
-      <s:import namespace="http://www.nativy.com/nis"/>
-      <s:import schemaLocation="http://test.nativy.com/nis/nis.asmx?schema=offerrequest" namespace="http://www.nativy.com/nis"/>
-      <s:element name="AuthenticateUser">
-        <s:complexType/>
-      </s:element>
-      <s:element name="AuthenticateUserResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="AuthenticateUserResult" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="SecuredWebServiceHeader" type="tns:SecuredWebServiceHeader"/>
-      <s:complexType name="SecuredWebServiceHeader">
-        <s:sequence>
-          <s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string"/>
-          <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
-          <s:element minOccurs="0" maxOccurs="1" name="AuthenticatedToken" type="s:string"/>
-        </s:sequence>
-        <s:anyAttribute/>
-      </s:complexType>
-      <s:element name="CreateOffer">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="requ">
-              <s:complexType>
-                <s:sequence>
-                  <s:any namespace="http://www.nativy.com/nis"/>
-                </s:sequence>
-              </s:complexType>
-            </s:element>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="CreateOfferResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="CreateOfferResult" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="GetOffer">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="OrderId" type="s:string"/>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="GetOfferResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="GetOfferResult">
-              <s:complexType>
-                <s:sequence>
-                  <s:any namespace="http://www.nativy.com/nis"/>
-                </s:sequence>
-              </s:complexType>
-            </s:element>
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="AuthenticateUserSoapIn">
-    <wsdl:part name="parameters" element="tns:AuthenticateUser"/>
-  </wsdl:message>
-  <wsdl:message name="AuthenticateUserSoapOut">
-    <wsdl:part name="parameters" element="tns:AuthenticateUserResponse"/>
-  </wsdl:message>
-  <wsdl:message name="AuthenticateUserSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSoapIn">
-    <wsdl:part name="parameters" element="tns:CreateOffer"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSoapOut">
-    <wsdl:part name="parameters" element="tns:CreateOfferResponse"/>
-  </wsdl:message>
-  <wsdl:message name="CreateOfferSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSoapIn">
-    <wsdl:part name="parameters" element="tns:GetOffer"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSoapOut">
-    <wsdl:part name="parameters" element="tns:GetOfferResponse"/>
-  </wsdl:message>
-  <wsdl:message name="GetOfferSecuredWebServiceHeader">
-    <wsdl:part name="SecuredWebServiceHeader" element="tns:SecuredWebServiceHeader"/>
-  </wsdl:message>
-  <wsdl:portType name="nisSoap">
-    <wsdl:operation name="AuthenticateUser">
-      <wsdl:input message="tns:AuthenticateUserSoapIn"/>
-      <wsdl:output message="tns:AuthenticateUserSoapOut"/>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <wsdl:input message="tns:CreateOfferSoapIn"/>
-      <wsdl:output message="tns:CreateOfferSoapOut"/>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <wsdl:input message="tns:GetOfferSoapIn"/>
-      <wsdl:output message="tns:GetOfferSoapOut"/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="nisSoap" type="tns:nisSoap">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="AuthenticateUser">
-      <soap:operation soapAction="https://www.nativy.com/nis/AuthenticateUser" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:AuthenticateUserSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <soap:operation soapAction="https://www.nativy.com/nis/CreateOffer" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:CreateOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <soap:operation soapAction="https://www.nativy.com/nis/GetOffer" style="document"/>
-      <wsdl:input>
-        <soap:body use="literal"/>
-        <soap:header message="tns:GetOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:binding name="nisSoap12" type="tns:nisSoap">
-    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="AuthenticateUser">
-      <soap12:operation soapAction="https://www.nativy.com/nis/AuthenticateUser" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:AuthenticateUserSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="CreateOffer">
-      <soap12:operation soapAction="https://www.nativy.com/nis/CreateOffer" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:CreateOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetOffer">
-      <soap12:operation soapAction="https://www.nativy.com/nis/GetOffer" style="document"/>
-      <wsdl:input>
-        <soap12:body use="literal"/>
-        <soap12:header message="tns:GetOfferSecuredWebServiceHeader" part="SecuredWebServiceHeader" use="literal"/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap12:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="nis">
-    <wsdl:port name="nisSoap" binding="tns:nisSoap">
-      <soap:address location="http://test.nativy.com/nis/nis.asmx"/>
-    </wsdl:port>
-    <wsdl:port name="nisSoap12" binding="tns:nisSoap12">
-      <soap12:address location="http://test.nativy.com/nis/nis.asmx"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
