diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..544be36
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,34 @@
+The Skyword module for Drupal provides easy integration between the Skyword 
+content marketing platform and any Drupal website.  Skyword is a cloud based 
+content marketing platform that helps websites manage their content creation
+process. 
+
+For more information on the Skyword content marketing platform, please see:
+      
+      http://www.skyword.com
+
+The Skyword module provides the following benefits:
+
+- Access to Skyword's content marketing tools and services including:
+        - Advanced content approval and editing workflows
+        - Access to thousands of writers
+        - Automated writer payment via paypal
+        - Detailed analytics tracking and reporting
+        
+- Enables automatic publication of articles from the Skyword platform to Drupal
+
+- Allows automatic syncing of Drupal taxonomies to the Skyword platform
+
+- Extends the default Drupal installation by adding enhanced SEO metadata fields 
+  including the following:
+      - SEO optimized title tag
+      - Meta description
+      - Google News target keyword
+
+- Supports the generation of meta-tags using the Open Graph protocol 
+  (http://developers.facebook.com/docs/opengraphprotocol/)
+
+- Creates new Drupal authors automatically when articles are approved in Skyword
+
+- Gives you the ability to track the performance of your articles by using a 
+  Skyword tracking tag
diff --git a/skyword.admin.inc b/skyword.admin.inc
new file mode 100644
index 0000000..b01a5bb
--- /dev/null
+++ b/skyword.admin.inc
@@ -0,0 +1,59 @@
+<?php
+/**
+ * @file
+ * Administrator functions
+ */
+
+/**
+ * Admin page.
+ */
+function skyword_adminpage() {
+  $form = array();
+  $form['skyword_adminpage'] = array(
+    '#type' => 'item',
+    '#title' => "Skyword Module",
+    '#markup' => "<p>The Skyword Module allows articles written with the Skyword platform to be published in Drupal.</p><p>To learn more about how Skyword help you reach and engage your audience, please contact us at <a href='mailto:learnmore@skyword.com'>learnmore@skyword.com</a> or visit <a href='www.skyword.com' target='_blank'>www.skyword.com</a>.</p><p>This is a beta plugin. Please contact Skyword Support (<a href='mailto:support@skyword.com'>support@skyword.com</a>) if you have any questions.</p>",
+  );
+  $form['skyword_api_key'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Skyword API Key'),
+    '#default_value' => variable_get('skyword_api_key'),
+    '#maxlength' => 20,
+    '#description' => t('The Skyword API Key is used to verify your program and allow the Skyword platform to publish to this site. '),
+    '#required' => TRUE,
+  );
+  $form['skyword_enable_og'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Include the Facebook OpenGraph tags on the article node'),
+    '#default_value' => variable_get('skyword_enable_og'),
+    '#maxlength' => 20,
+    '#description' => t('The OpenGraph tags are used to properly send information to Facebook when a page is recommended, liked, or shared by Facebook users.'),
+    '#required' => FALSE,
+  );
+  $form['skyword_enable_meta'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Include the meta description tag on the article node.'),
+    '#default_value' => variable_get('skyword_enable_meta'),
+    '#maxlength' => 20,
+    '#description' => t('The meta description tag provides additional information for search engines to properly index the web page. '),
+    '#required' => FALSE,
+  );
+  $form['skyword_enable_keywords'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Include the Google News Keyword tag on the article node.'),
+    '#default_value' => variable_get('skyword_enable_keywords'),
+    '#maxlength' => 20,
+    '#description' => t('The Google News Keyword tag provides additional information for Google to properly index the web page for news searches.'),
+    '#required' => FALSE,
+  );
+  $form['skyword_enable_title'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Update the page title tag with an SEO Optimized title'),
+    '#default_value' => variable_get('skyword_enable_keywords'),
+    '#maxlength' => 20,
+    '#description' => t('The SEO Optimized title provided by Skyword will replace the title of the article.'),
+    '#required' => FALSE,
+  );
+
+  return system_settings_form($form);
+}
diff --git a/skyword.info b/skyword.info
new file mode 100644
index 0000000..3aece9a
--- /dev/null
+++ b/skyword.info
@@ -0,0 +1,5 @@
+name = Skyword
+description = Plugin for connecting to the Skyword content production system.
+package = Skyword
+core = 7.x
+;dependencies[] = autoload
diff --git a/skyword.install b/skyword.install
new file mode 100644
index 0000000..898819b
--- /dev/null
+++ b/skyword.install
@@ -0,0 +1,5 @@
+<?php
+/**
+ * @file
+ * Skyword Module Install.
+ */
diff --git a/skyword.module b/skyword.module
new file mode 100644
index 0000000..695db2a
--- /dev/null
+++ b/skyword.module
@@ -0,0 +1,581 @@
+<?php
+/**
+ * @file
+ * http://www.syword.com
+ * Skyword content production platform connector module.
+ */
+
+/**
+ * Implements the help hook.
+ */
+function skyword_help($path, $arg) {
+
+  if ($path == 'admin/help#skyword') {
+    return t('Connects to the Skyword content production platform.');
+  }
+
+}
+/**
+ * Implements the xmlrpc hook.
+ */
+function skyword_xmlrpc() {
+  $methods[] = array(
+    'skyword.version',
+    'skyword_version_callback',
+    array(
+      'array',
+      'string',
+      'string',
+    ),
+    t('Tests whether connection info is correct'),
+  );
+
+  $methods[] = array(
+    'skyword.post',
+    'skyword_post_callback',
+    array(
+      'string',
+      'string',
+      'string',
+      'array',
+    ),
+    t('Creates a content item from the Skyword content platform.'),
+  );
+
+  $methods[] = array(
+    'skyword.author',
+    'skyword_author_callback',
+    array(
+      'array',
+      'string',
+      'string',
+      'array',
+    ),
+    t('Checks if user exists, and adds them if not'),
+  );
+
+  $methods[] = array(
+    'skyword.get_post',
+    'skyword_get_post_callback',
+    array(
+      'array',
+      'string',
+      'string',
+      'string',
+    ),
+    t('Retrieves a post.'),
+  );
+
+  $methods[] = array(
+    'skyword.delete_post',
+    'skyword_delete_post_callback',
+    array(
+      'array',
+      'string',
+      'string',
+      'string',
+    ),
+    t('Retrieves a post.'),
+  );
+
+  $methods[] = array(
+    'skyword.newMediaObject',
+    'skyword_newMediaObject_callback',
+    array(
+      'array',
+      'string',
+      'string',
+      'array',
+    ),
+    t('Uploads a file to your webserver.'),
+  );
+
+  $methods[] = array(
+    'skyword.getAuthors',
+    'skyword_get_authors_callback',
+    array(
+      'array',
+      'string',
+      'string',
+    ),
+    t('Sync Authors.'),
+  );
+
+  $methods[] = array(
+    'skyword.get_taxonomies',
+    'skyword_get_taxonomies_callback',
+    array(
+      'array',
+      'string',
+      'string',
+    ),
+  );
+  return $methods;
+}
+/**
+ * Used to return plugin version to publishing site.
+ */
+function skyword_version_callback($hash, $timestamp) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+  else {
+    $sys_info = system_get_info("module", "skyword");
+    $success = array(
+      'status' => "success",
+      'plugin_version' => $sys_info['version'],
+      'drupal_version' => VERSION,
+    );
+    return $success;
+  }
+}
+/**
+ * Creates users if they do not exist for article.
+ */
+function skyword_author_callback($hash, $timestamp, $struct) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+  else {
+
+    /* Check if the user exists. */
+    if (isset($struct['username']) && user_load_by_name($struct['username']) != FALSE) {
+      // User found.
+      $account = user_load_by_name($struct['username']);
+    }
+    else {
+      $password = user_password(8);
+      /* Set up the user fields. */
+
+      $new_user = array(
+        'name' => $struct['username'],
+        'pass' => $password,
+        'mail' => 'sw-' . $struct['account_id'] . '@skyword.com',
+        'signature_format' => 'full_html',
+        'status' => 1,
+        'timezone' => 'America/New_York',
+        'init' => 'Email',
+        'roles' => 'Roles',
+      );
+      $account = user_save(NULL, $new_user);
+
+    }
+    return array(
+      "status" => "success",
+      "uid" => $account->uid,
+    );
+
+  }
+}
+/**
+ * Create post.
+ */
+function skyword_post_callback($hash, $timestamp, $content) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+
+  module_load_include('inc', 'node', 'node.pages');
+  $author = user_load($content['user-id']);
+
+  $node = (object) array(
+    'type' => $content['type'],
+    'language' => LANGUAGE_NONE,
+  );
+  if ($content['publication_state'] == "draft") {
+    $node->status = NODE_NOT_PUBLISHED;
+  }
+  else {
+    $node->status = NODE_PUBLISHED;
+  }
+  if (isset($content['nid'])) {
+    /* Only do an update if the node exists. */
+    $existing_node = node_load(array('nid' => $content['nid']));
+    if ($existing_node != FALSE) {
+      $node->nid = $content['nid'];
+
+    }
+  }
+  node_object_prepare($node);
+  $form_state = array();
+  $form_state['values']['op'] = t('Save');
+  drupal_form_submit("{$node->type}_node_form", $form_state, $node);
+  skyword_create_metafields($content);
+
+  $node->{'skyword_tracking_tag'}[LANGUAGE_NONE][0]['value'] = $content['tracking'];
+  $node->{'skyword_seo_title'}[LANGUAGE_NONE][0]['value'] = $content['metatitle'];
+  $node->{'skyword_content_id'}[LANGUAGE_NONE][0]['value'] = $content['skyword_content_id'];
+
+  if (isset($content['metadescription'])) {
+    $node->{'skyword_metadescription'}[LANGUAGE_NONE][0]['value'] = $content['metadescription'];
+  }
+  if (isset($content['metakeyword'])) {
+    $node->{'skyword_keyword'}[LANGUAGE_NONE][0]['value'] = $content['metakeyword'];
+  }
+
+  foreach ($content['template_elements'] as $field) {
+    switch ($field['type']) {
+      case 'title':
+        $node->{$field['key']} = $field['value'];
+        break;
+
+      case 'text':
+        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = $field['value'];
+        $node->{$field['key']}[LANGUAGE_NONE][0]['format'] = 'full_html';
+        break;
+
+      case 'boolean':
+        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = intval($field['value']);
+        break;
+
+      case 'file':
+        $node->{$field['key']}[LANGUAGE_NONE][] = array('fid' => $field['value']);
+        break;
+
+      case 'taxonomy':
+        $tax_values = explode(',', $field['value']);
+        foreach ($tax_values as $value) {
+          $node->{$field['key']}[LANGUAGE_NONE][]['tid'] = skyword_get_tid_for_term(trim($value), $field['vocabulary']);
+        }
+        break;
+
+      default:
+        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = $field['value'];
+        break;
+
+    }
+  }
+
+  /* Allow updates. */
+  if ($existing_node != FALSE) {
+    $check = node_last_changed($node->nid);
+    $node->vid = $content['nid'];
+    $node->changed = $check + 10;
+  }
+
+  $node->uid = $author->uid;
+  node_save($node);
+  return array(
+    "nid" => $node->nid,
+    "link" => "http://" . $_SERVER['HTTP_HOST'] . url('node/' . $node->nid),
+    'uid' => $author->uid,
+  );
+
+}
+/**
+ * Delete post.
+ */
+function skyword_delete_post_callback($hash, $timestamp, $postid) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+  node_delete($postid);
+  return array(
+    "status" => "success",
+  );
+}
+/**
+ * Uploads file.
+ */
+function skyword_newMediaObject_callback($hash, $timestamp, $file) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+  else {
+    $dest = file_build_uri(basename($file['name']));
+    $data = $file['bits'];
+
+    if (!$file = file_save_data($data, $dest, FILE_EXISTS_REPLACE)) {
+      return array('status' => 'error');
+    }
+    else {
+      // Return the successful result.
+      file_usage_add($file, 'file', 'skyword', 1);
+      return array(
+        'status' => 'success',
+        'url' => file_create_url($dest),
+        'slug' => $dest,
+        'clientIdentifier' => $file->fid,
+      );
+    }
+  }
+}
+/**
+ * Pulls lists of users from system.
+ */
+function skyword_get_authors_callback($username, $password) {
+  $users = entity_load('user', FALSE, NULL, TRUE);
+  $output = array();
+  foreach ($users as $key => $value) {
+    $tmp = array();
+    foreach ($value as $vkey => $vval) {
+      if ($vkey === "name" || $vkey === "uid") {
+        $tmp[$vkey] = $vval;
+      }
+    }
+    $output[] = $tmp;
+  }
+  return $output;
+}
+/**
+ * Pull taxonomys from system.
+ */
+function skyword_get_taxonomies_callback($hash, $timestamp) {
+  $test = skyword_validate_secret($hash, $timestamp);
+  if (is_array($test)) {
+    return $test;
+  }
+  else {
+    $vocabulary_array = taxonomy_get_vocabularies();
+    $taxonomies = array();
+
+    foreach ($vocabulary_array as $vocabulary) {
+      $taxonomy_array = taxonomy_get_tree($vocabulary->vid, 0);
+      $temp_array = array();
+      foreach ($taxonomy_array as $taxonomy) {
+        $temp_array[] = array('tid' => $taxonomy->tid, 'term' => $taxonomy->name);
+      }
+      $taxonomies[$vocabulary->name] = $temp_array;
+    }
+
+    return $taxonomies;
+  }
+}
+/**
+ * Generate term id for a given vocabulary word.
+ */
+function skyword_get_tid_for_term($term_val, $vocabulary) {
+  $term = taxonomy_get_term_by_name($term_val);
+  if ($term == NULL) {
+    $terms = new stdClass();
+    $terms->vid = 1;
+    $terms->name = $term_val;
+    $terms->description = $term_val;
+    $get_tid = new stdClass();
+    taxonomy_term_save($terms);
+  }
+  $terms_array = array_keys($term);
+  $tid = $terms_array['0'];
+  return $tid;
+}
+/**
+ * Adds SEO title tag.
+ */
+function skyword_preprocess_page(&$vars) {
+  if (preg_match('/^node\/([0-9]+)$/', $_GET['q'], $matches)) {
+    $node = menu_get_object();
+    if (variable_get('skyword_enable_title') == TRUE) {
+      $seo_title_val = $node->skyword_seo_title[LANGUAGE_NONE][0]['value'];
+      $vars['title'] = $node->title;
+      drupal_set_title($seo_title_val);
+    }
+  }
+
+}
+/**
+ * Adds meta tags if configured.
+ */
+function skyword_page_alter(&$page) {
+  $matches = array();
+  error_reporting(E_ERROR);
+  if (preg_match('/^node\/([0-9]+)$/', $_GET['q'], $matches)) {
+    $node = menu_get_object();
+    $tracker_val = $node->skyword_tracking_tag[LANGUAGE_NONE][0]['value'];
+    $seo_title_val = $node->skyword_seo_title[LANGUAGE_NONE][0]['value'];
+    $description_val = $node->skyword_metadescription[LANGUAGE_NONE][0]['value'];
+    $keyword_val = $node->skyword_keyword[LANGUAGE_NONE][0]['value'];
+
+    $tracker = array(
+      '#type' => 'markup',
+      '#markup' => $tracker_val,
+    );
+    drupal_add_html_head($tracker, 'jquery-tmpl');
+
+    if (variable_get('skyword_enable_meta') == TRUE) {
+
+      $type = array(
+        '#tag' => 'meta',
+        '#attributes' => array(
+          'property' => 'type',
+          'content' => "article",
+        ),
+      );
+      drupal_add_html_head($type, 'skyword_type');
+      if (isset($description_val)) {
+        $desc = array(
+          '#tag' => 'meta',
+          '#attributes' => array('name' => 'description',  'content' => $description_val),
+        );
+        drupal_add_html_head($desc, 'skyword_description');
+      }
+    }
+
+    if (variable_get('skyword_enable_og') == TRUE) {
+      if (isset($seo_title_val)) {
+        $og_title = array(
+          '#tag' => 'meta',
+          '#attributes' => array('property' => 'og:title', 'content' => $seo_title_val),
+        );
+        drupal_add_html_head($og_title, 'skyword_og_title');
+      }
+
+      $og_url = array(
+        '#tag' => 'meta',
+        '#attributes' => array(
+          'property' => 'og:url',
+          'content' => url('node/1', array('absolute' => TRUE)
+          ),
+        ),
+      );
+      drupal_add_html_head($og_url, 'skyword_og_url');
+
+      $name = array(
+        '#tag' => 'meta',
+        '#attributes' => array(
+          'property' => 'og:site_name',
+          'content' => variable_get('site_name', ''),
+        ),
+      );
+      drupal_add_html_head($name, 'site_name');
+
+      if (isset($description_val)) {
+        $og_desc = array(
+          '#tag' => 'meta',
+          '#attributes' => array('property' => 'og:description', 'content' => $description_val),
+        );
+        drupal_add_html_head($og_desc, 'skyword_og_description');
+      }
+    }
+
+    if (variable_get('skyword_enable_keywords') == TRUE) {
+      if (isset($keyword_val)) {
+        $keywords = array(
+          '#tag' => 'meta',
+          '#attributes' => array('property' => 'news_keywords', 'content' => $keyword_val),
+        );
+        drupal_add_html_head($keywords, 'news_keywords');
+      }
+    }
+
+  }
+}
+/**
+ * Generates meta fields.
+ */
+function skyword_create_metafields($content) {
+
+  if (!field_info_instance('node', 'skyword_tracking_tag', $content['type'])) {
+    skyword_create_field('skyword_tracking_tag', 'Skyword Tracking Tag', 'The Skyword Tracking Tag is used to provide article performance data to the Skyword platform. This must be included on the page the article is being displayed.', $content['type']);
+  }
+  if (!field_info_instance('node', 'skyword_metadescription', $content['type'])) {
+    skyword_create_field('skyword_metadescription', 'Meta Description', 'This is the search optimized meta description that was written with the Skyword platform.', $content['type']);
+  }
+  if (!field_info_instance('node', 'skyword_seo_title', $content['type'])) {
+    skyword_create_field('skyword_seo_title', 'HTML Title', 'This is the search optimized title creating with the Skyword platform.', $content['type']);
+  }
+  if (!field_info_instance('node', 'skyword_keyword', $content['type'])) {
+    skyword_create_field('skyword_keyword', 'Google News Keyword', 'This is the keyword or keywords used to inform Google when the page is index for news searches. The keywords are provided by the Skyword platform.', $content['type']);
+  }
+  if (!field_info_instance('node', 'skyword_content_id', $content['type'])) {
+    skyword_create_field('skyword_content_id', 'Skyword Content Id', 'This is the content ID in the Skyword platform. Please include this content ID when contacting Skyword Support.', $content['type']);
+  }
+
+}
+/**
+ * Creates fields.
+ */
+function skyword_create_field($field_name, $label, $description, $bundle) {
+
+  /* Create field if it doesn't exist. */
+  if (!field_info_field($field_name)) {
+    $field = array(
+      'field_name'    => $field_name,
+      'type'          => 'text',
+    );
+    field_create_field($field);
+  }
+
+  /* Create content type instance. */
+  $field_instance = array(
+    'field_name'    => $field_name,
+    'entity_type'   => 'node',
+    'bundle'        => $bundle,
+    'label'         => $label,
+    'description'   => $description,
+    'display' => array(
+      'default' => array('type' => 'hidden'),
+    ),
+  );
+  field_create_instance($field_instance);
+
+}
+/**
+ * Checks if secret key is valid.
+ */
+function skyword_validate_secret($hash, $timestamp) {
+  $temp_time = time();
+  $api_key = variable_get('skyword_api_key');
+  if ($temp_time - $timestamp <= 200 && $temp_time - $timestamp >= -200) {
+    if ($api_key != "") {
+      $temp_hash = md5($api_key . $timestamp);
+      if ($temp_hash == $hash) {
+        return TRUE;
+      }
+      else {
+        $error_data = array(
+          'message' => t('Could not match hash'),
+          'error_code' => 405,
+          'status' => "error",
+        );
+        return $error_data;
+      }
+    }
+    else {
+      $error_data = array(
+        'message' => t('Skyword API key not set'),
+        'error_code' => 401,
+        'status' => "error",
+      );
+      return $error_data;
+    }
+  }
+  watchdog('user', 'Invalid connection attempt - bad timestamp used');
+  $error_data = array(
+    'message' => 'Bad timestamp used. Timestamp sent: ' . $timestamp,
+    'error_code' => 401,
+    'status' => "error",
+  );
+  return $error_data;
+}
+/**
+ * Adds permission.
+ */
+function skyword_permission() {
+  return array(
+    'Access Skyword Admin' => array(
+      'title' => t('Access Skyword Admin'),
+      'description' => t('access Skyword admin'),
+    ),
+  );
+}
+/**
+ * Adds menu item to admin interface.
+ */
+function skyword_menu() {
+  $items = array();
+  $items['admin/settings/skyword'] = array(
+    'title' => 'Skyword',
+    'description' => 'Allows administrators to configure the Skyword module',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('skyword_adminpage'),
+    'file' => 'skyword.admin.inc',
+    'access arguments' => array('administer skyword settings'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  return $items;
+}
diff --git a/skyword/README.txt b/skyword/README.txt
deleted file mode 100644
index 544be36..0000000
--- a/skyword/README.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-The Skyword module for Drupal provides easy integration between the Skyword 
-content marketing platform and any Drupal website.  Skyword is a cloud based 
-content marketing platform that helps websites manage their content creation
-process. 
-
-For more information on the Skyword content marketing platform, please see:
-      
-      http://www.skyword.com
-
-The Skyword module provides the following benefits:
-
-- Access to Skyword's content marketing tools and services including:
-        - Advanced content approval and editing workflows
-        - Access to thousands of writers
-        - Automated writer payment via paypal
-        - Detailed analytics tracking and reporting
-        
-- Enables automatic publication of articles from the Skyword platform to Drupal
-
-- Allows automatic syncing of Drupal taxonomies to the Skyword platform
-
-- Extends the default Drupal installation by adding enhanced SEO metadata fields 
-  including the following:
-      - SEO optimized title tag
-      - Meta description
-      - Google News target keyword
-
-- Supports the generation of meta-tags using the Open Graph protocol 
-  (http://developers.facebook.com/docs/opengraphprotocol/)
-
-- Creates new Drupal authors automatically when articles are approved in Skyword
-
-- Gives you the ability to track the performance of your articles by using a 
-  Skyword tracking tag
diff --git a/skyword/skyword.admin.inc b/skyword/skyword.admin.inc
deleted file mode 100644
index b01a5bb..0000000
--- a/skyword/skyword.admin.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * @file
- * Administrator functions
- */
-
-/**
- * Admin page.
- */
-function skyword_adminpage() {
-  $form = array();
-  $form['skyword_adminpage'] = array(
-    '#type' => 'item',
-    '#title' => "Skyword Module",
-    '#markup' => "<p>The Skyword Module allows articles written with the Skyword platform to be published in Drupal.</p><p>To learn more about how Skyword help you reach and engage your audience, please contact us at <a href='mailto:learnmore@skyword.com'>learnmore@skyword.com</a> or visit <a href='www.skyword.com' target='_blank'>www.skyword.com</a>.</p><p>This is a beta plugin. Please contact Skyword Support (<a href='mailto:support@skyword.com'>support@skyword.com</a>) if you have any questions.</p>",
-  );
-  $form['skyword_api_key'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Skyword API Key'),
-    '#default_value' => variable_get('skyword_api_key'),
-    '#maxlength' => 20,
-    '#description' => t('The Skyword API Key is used to verify your program and allow the Skyword platform to publish to this site. '),
-    '#required' => TRUE,
-  );
-  $form['skyword_enable_og'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Include the Facebook OpenGraph tags on the article node'),
-    '#default_value' => variable_get('skyword_enable_og'),
-    '#maxlength' => 20,
-    '#description' => t('The OpenGraph tags are used to properly send information to Facebook when a page is recommended, liked, or shared by Facebook users.'),
-    '#required' => FALSE,
-  );
-  $form['skyword_enable_meta'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Include the meta description tag on the article node.'),
-    '#default_value' => variable_get('skyword_enable_meta'),
-    '#maxlength' => 20,
-    '#description' => t('The meta description tag provides additional information for search engines to properly index the web page. '),
-    '#required' => FALSE,
-  );
-  $form['skyword_enable_keywords'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Include the Google News Keyword tag on the article node.'),
-    '#default_value' => variable_get('skyword_enable_keywords'),
-    '#maxlength' => 20,
-    '#description' => t('The Google News Keyword tag provides additional information for Google to properly index the web page for news searches.'),
-    '#required' => FALSE,
-  );
-  $form['skyword_enable_title'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Update the page title tag with an SEO Optimized title'),
-    '#default_value' => variable_get('skyword_enable_keywords'),
-    '#maxlength' => 20,
-    '#description' => t('The SEO Optimized title provided by Skyword will replace the title of the article.'),
-    '#required' => FALSE,
-  );
-
-  return system_settings_form($form);
-}
diff --git a/skyword/skyword.info b/skyword/skyword.info
deleted file mode 100644
index 3aece9a..0000000
--- a/skyword/skyword.info
+++ /dev/null
@@ -1,5 +0,0 @@
-name = Skyword
-description = Plugin for connecting to the Skyword content production system.
-package = Skyword
-core = 7.x
-;dependencies[] = autoload
diff --git a/skyword/skyword.install b/skyword/skyword.install
deleted file mode 100644
index 898819b..0000000
--- a/skyword/skyword.install
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-/**
- * @file
- * Skyword Module Install.
- */
diff --git a/skyword/skyword.module b/skyword/skyword.module
deleted file mode 100644
index 695db2a..0000000
--- a/skyword/skyword.module
+++ /dev/null
@@ -1,581 +0,0 @@
-<?php
-/**
- * @file
- * http://www.syword.com
- * Skyword content production platform connector module.
- */
-
-/**
- * Implements the help hook.
- */
-function skyword_help($path, $arg) {
-
-  if ($path == 'admin/help#skyword') {
-    return t('Connects to the Skyword content production platform.');
-  }
-
-}
-/**
- * Implements the xmlrpc hook.
- */
-function skyword_xmlrpc() {
-  $methods[] = array(
-    'skyword.version',
-    'skyword_version_callback',
-    array(
-      'array',
-      'string',
-      'string',
-    ),
-    t('Tests whether connection info is correct'),
-  );
-
-  $methods[] = array(
-    'skyword.post',
-    'skyword_post_callback',
-    array(
-      'string',
-      'string',
-      'string',
-      'array',
-    ),
-    t('Creates a content item from the Skyword content platform.'),
-  );
-
-  $methods[] = array(
-    'skyword.author',
-    'skyword_author_callback',
-    array(
-      'array',
-      'string',
-      'string',
-      'array',
-    ),
-    t('Checks if user exists, and adds them if not'),
-  );
-
-  $methods[] = array(
-    'skyword.get_post',
-    'skyword_get_post_callback',
-    array(
-      'array',
-      'string',
-      'string',
-      'string',
-    ),
-    t('Retrieves a post.'),
-  );
-
-  $methods[] = array(
-    'skyword.delete_post',
-    'skyword_delete_post_callback',
-    array(
-      'array',
-      'string',
-      'string',
-      'string',
-    ),
-    t('Retrieves a post.'),
-  );
-
-  $methods[] = array(
-    'skyword.newMediaObject',
-    'skyword_newMediaObject_callback',
-    array(
-      'array',
-      'string',
-      'string',
-      'array',
-    ),
-    t('Uploads a file to your webserver.'),
-  );
-
-  $methods[] = array(
-    'skyword.getAuthors',
-    'skyword_get_authors_callback',
-    array(
-      'array',
-      'string',
-      'string',
-    ),
-    t('Sync Authors.'),
-  );
-
-  $methods[] = array(
-    'skyword.get_taxonomies',
-    'skyword_get_taxonomies_callback',
-    array(
-      'array',
-      'string',
-      'string',
-    ),
-  );
-  return $methods;
-}
-/**
- * Used to return plugin version to publishing site.
- */
-function skyword_version_callback($hash, $timestamp) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-  else {
-    $sys_info = system_get_info("module", "skyword");
-    $success = array(
-      'status' => "success",
-      'plugin_version' => $sys_info['version'],
-      'drupal_version' => VERSION,
-    );
-    return $success;
-  }
-}
-/**
- * Creates users if they do not exist for article.
- */
-function skyword_author_callback($hash, $timestamp, $struct) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-  else {
-
-    /* Check if the user exists. */
-    if (isset($struct['username']) && user_load_by_name($struct['username']) != FALSE) {
-      // User found.
-      $account = user_load_by_name($struct['username']);
-    }
-    else {
-      $password = user_password(8);
-      /* Set up the user fields. */
-
-      $new_user = array(
-        'name' => $struct['username'],
-        'pass' => $password,
-        'mail' => 'sw-' . $struct['account_id'] . '@skyword.com',
-        'signature_format' => 'full_html',
-        'status' => 1,
-        'timezone' => 'America/New_York',
-        'init' => 'Email',
-        'roles' => 'Roles',
-      );
-      $account = user_save(NULL, $new_user);
-
-    }
-    return array(
-      "status" => "success",
-      "uid" => $account->uid,
-    );
-
-  }
-}
-/**
- * Create post.
- */
-function skyword_post_callback($hash, $timestamp, $content) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-
-  module_load_include('inc', 'node', 'node.pages');
-  $author = user_load($content['user-id']);
-
-  $node = (object) array(
-    'type' => $content['type'],
-    'language' => LANGUAGE_NONE,
-  );
-  if ($content['publication_state'] == "draft") {
-    $node->status = NODE_NOT_PUBLISHED;
-  }
-  else {
-    $node->status = NODE_PUBLISHED;
-  }
-  if (isset($content['nid'])) {
-    /* Only do an update if the node exists. */
-    $existing_node = node_load(array('nid' => $content['nid']));
-    if ($existing_node != FALSE) {
-      $node->nid = $content['nid'];
-
-    }
-  }
-  node_object_prepare($node);
-  $form_state = array();
-  $form_state['values']['op'] = t('Save');
-  drupal_form_submit("{$node->type}_node_form", $form_state, $node);
-  skyword_create_metafields($content);
-
-  $node->{'skyword_tracking_tag'}[LANGUAGE_NONE][0]['value'] = $content['tracking'];
-  $node->{'skyword_seo_title'}[LANGUAGE_NONE][0]['value'] = $content['metatitle'];
-  $node->{'skyword_content_id'}[LANGUAGE_NONE][0]['value'] = $content['skyword_content_id'];
-
-  if (isset($content['metadescription'])) {
-    $node->{'skyword_metadescription'}[LANGUAGE_NONE][0]['value'] = $content['metadescription'];
-  }
-  if (isset($content['metakeyword'])) {
-    $node->{'skyword_keyword'}[LANGUAGE_NONE][0]['value'] = $content['metakeyword'];
-  }
-
-  foreach ($content['template_elements'] as $field) {
-    switch ($field['type']) {
-      case 'title':
-        $node->{$field['key']} = $field['value'];
-        break;
-
-      case 'text':
-        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = $field['value'];
-        $node->{$field['key']}[LANGUAGE_NONE][0]['format'] = 'full_html';
-        break;
-
-      case 'boolean':
-        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = intval($field['value']);
-        break;
-
-      case 'file':
-        $node->{$field['key']}[LANGUAGE_NONE][] = array('fid' => $field['value']);
-        break;
-
-      case 'taxonomy':
-        $tax_values = explode(',', $field['value']);
-        foreach ($tax_values as $value) {
-          $node->{$field['key']}[LANGUAGE_NONE][]['tid'] = skyword_get_tid_for_term(trim($value), $field['vocabulary']);
-        }
-        break;
-
-      default:
-        $node->{$field['key']}[LANGUAGE_NONE][]['value'] = $field['value'];
-        break;
-
-    }
-  }
-
-  /* Allow updates. */
-  if ($existing_node != FALSE) {
-    $check = node_last_changed($node->nid);
-    $node->vid = $content['nid'];
-    $node->changed = $check + 10;
-  }
-
-  $node->uid = $author->uid;
-  node_save($node);
-  return array(
-    "nid" => $node->nid,
-    "link" => "http://" . $_SERVER['HTTP_HOST'] . url('node/' . $node->nid),
-    'uid' => $author->uid,
-  );
-
-}
-/**
- * Delete post.
- */
-function skyword_delete_post_callback($hash, $timestamp, $postid) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-  node_delete($postid);
-  return array(
-    "status" => "success",
-  );
-}
-/**
- * Uploads file.
- */
-function skyword_newMediaObject_callback($hash, $timestamp, $file) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-  else {
-    $dest = file_build_uri(basename($file['name']));
-    $data = $file['bits'];
-
-    if (!$file = file_save_data($data, $dest, FILE_EXISTS_REPLACE)) {
-      return array('status' => 'error');
-    }
-    else {
-      // Return the successful result.
-      file_usage_add($file, 'file', 'skyword', 1);
-      return array(
-        'status' => 'success',
-        'url' => file_create_url($dest),
-        'slug' => $dest,
-        'clientIdentifier' => $file->fid,
-      );
-    }
-  }
-}
-/**
- * Pulls lists of users from system.
- */
-function skyword_get_authors_callback($username, $password) {
-  $users = entity_load('user', FALSE, NULL, TRUE);
-  $output = array();
-  foreach ($users as $key => $value) {
-    $tmp = array();
-    foreach ($value as $vkey => $vval) {
-      if ($vkey === "name" || $vkey === "uid") {
-        $tmp[$vkey] = $vval;
-      }
-    }
-    $output[] = $tmp;
-  }
-  return $output;
-}
-/**
- * Pull taxonomys from system.
- */
-function skyword_get_taxonomies_callback($hash, $timestamp) {
-  $test = skyword_validate_secret($hash, $timestamp);
-  if (is_array($test)) {
-    return $test;
-  }
-  else {
-    $vocabulary_array = taxonomy_get_vocabularies();
-    $taxonomies = array();
-
-    foreach ($vocabulary_array as $vocabulary) {
-      $taxonomy_array = taxonomy_get_tree($vocabulary->vid, 0);
-      $temp_array = array();
-      foreach ($taxonomy_array as $taxonomy) {
-        $temp_array[] = array('tid' => $taxonomy->tid, 'term' => $taxonomy->name);
-      }
-      $taxonomies[$vocabulary->name] = $temp_array;
-    }
-
-    return $taxonomies;
-  }
-}
-/**
- * Generate term id for a given vocabulary word.
- */
-function skyword_get_tid_for_term($term_val, $vocabulary) {
-  $term = taxonomy_get_term_by_name($term_val);
-  if ($term == NULL) {
-    $terms = new stdClass();
-    $terms->vid = 1;
-    $terms->name = $term_val;
-    $terms->description = $term_val;
-    $get_tid = new stdClass();
-    taxonomy_term_save($terms);
-  }
-  $terms_array = array_keys($term);
-  $tid = $terms_array['0'];
-  return $tid;
-}
-/**
- * Adds SEO title tag.
- */
-function skyword_preprocess_page(&$vars) {
-  if (preg_match('/^node\/([0-9]+)$/', $_GET['q'], $matches)) {
-    $node = menu_get_object();
-    if (variable_get('skyword_enable_title') == TRUE) {
-      $seo_title_val = $node->skyword_seo_title[LANGUAGE_NONE][0]['value'];
-      $vars['title'] = $node->title;
-      drupal_set_title($seo_title_val);
-    }
-  }
-
-}
-/**
- * Adds meta tags if configured.
- */
-function skyword_page_alter(&$page) {
-  $matches = array();
-  error_reporting(E_ERROR);
-  if (preg_match('/^node\/([0-9]+)$/', $_GET['q'], $matches)) {
-    $node = menu_get_object();
-    $tracker_val = $node->skyword_tracking_tag[LANGUAGE_NONE][0]['value'];
-    $seo_title_val = $node->skyword_seo_title[LANGUAGE_NONE][0]['value'];
-    $description_val = $node->skyword_metadescription[LANGUAGE_NONE][0]['value'];
-    $keyword_val = $node->skyword_keyword[LANGUAGE_NONE][0]['value'];
-
-    $tracker = array(
-      '#type' => 'markup',
-      '#markup' => $tracker_val,
-    );
-    drupal_add_html_head($tracker, 'jquery-tmpl');
-
-    if (variable_get('skyword_enable_meta') == TRUE) {
-
-      $type = array(
-        '#tag' => 'meta',
-        '#attributes' => array(
-          'property' => 'type',
-          'content' => "article",
-        ),
-      );
-      drupal_add_html_head($type, 'skyword_type');
-      if (isset($description_val)) {
-        $desc = array(
-          '#tag' => 'meta',
-          '#attributes' => array('name' => 'description',  'content' => $description_val),
-        );
-        drupal_add_html_head($desc, 'skyword_description');
-      }
-    }
-
-    if (variable_get('skyword_enable_og') == TRUE) {
-      if (isset($seo_title_val)) {
-        $og_title = array(
-          '#tag' => 'meta',
-          '#attributes' => array('property' => 'og:title', 'content' => $seo_title_val),
-        );
-        drupal_add_html_head($og_title, 'skyword_og_title');
-      }
-
-      $og_url = array(
-        '#tag' => 'meta',
-        '#attributes' => array(
-          'property' => 'og:url',
-          'content' => url('node/1', array('absolute' => TRUE)
-          ),
-        ),
-      );
-      drupal_add_html_head($og_url, 'skyword_og_url');
-
-      $name = array(
-        '#tag' => 'meta',
-        '#attributes' => array(
-          'property' => 'og:site_name',
-          'content' => variable_get('site_name', ''),
-        ),
-      );
-      drupal_add_html_head($name, 'site_name');
-
-      if (isset($description_val)) {
-        $og_desc = array(
-          '#tag' => 'meta',
-          '#attributes' => array('property' => 'og:description', 'content' => $description_val),
-        );
-        drupal_add_html_head($og_desc, 'skyword_og_description');
-      }
-    }
-
-    if (variable_get('skyword_enable_keywords') == TRUE) {
-      if (isset($keyword_val)) {
-        $keywords = array(
-          '#tag' => 'meta',
-          '#attributes' => array('property' => 'news_keywords', 'content' => $keyword_val),
-        );
-        drupal_add_html_head($keywords, 'news_keywords');
-      }
-    }
-
-  }
-}
-/**
- * Generates meta fields.
- */
-function skyword_create_metafields($content) {
-
-  if (!field_info_instance('node', 'skyword_tracking_tag', $content['type'])) {
-    skyword_create_field('skyword_tracking_tag', 'Skyword Tracking Tag', 'The Skyword Tracking Tag is used to provide article performance data to the Skyword platform. This must be included on the page the article is being displayed.', $content['type']);
-  }
-  if (!field_info_instance('node', 'skyword_metadescription', $content['type'])) {
-    skyword_create_field('skyword_metadescription', 'Meta Description', 'This is the search optimized meta description that was written with the Skyword platform.', $content['type']);
-  }
-  if (!field_info_instance('node', 'skyword_seo_title', $content['type'])) {
-    skyword_create_field('skyword_seo_title', 'HTML Title', 'This is the search optimized title creating with the Skyword platform.', $content['type']);
-  }
-  if (!field_info_instance('node', 'skyword_keyword', $content['type'])) {
-    skyword_create_field('skyword_keyword', 'Google News Keyword', 'This is the keyword or keywords used to inform Google when the page is index for news searches. The keywords are provided by the Skyword platform.', $content['type']);
-  }
-  if (!field_info_instance('node', 'skyword_content_id', $content['type'])) {
-    skyword_create_field('skyword_content_id', 'Skyword Content Id', 'This is the content ID in the Skyword platform. Please include this content ID when contacting Skyword Support.', $content['type']);
-  }
-
-}
-/**
- * Creates fields.
- */
-function skyword_create_field($field_name, $label, $description, $bundle) {
-
-  /* Create field if it doesn't exist. */
-  if (!field_info_field($field_name)) {
-    $field = array(
-      'field_name'    => $field_name,
-      'type'          => 'text',
-    );
-    field_create_field($field);
-  }
-
-  /* Create content type instance. */
-  $field_instance = array(
-    'field_name'    => $field_name,
-    'entity_type'   => 'node',
-    'bundle'        => $bundle,
-    'label'         => $label,
-    'description'   => $description,
-    'display' => array(
-      'default' => array('type' => 'hidden'),
-    ),
-  );
-  field_create_instance($field_instance);
-
-}
-/**
- * Checks if secret key is valid.
- */
-function skyword_validate_secret($hash, $timestamp) {
-  $temp_time = time();
-  $api_key = variable_get('skyword_api_key');
-  if ($temp_time - $timestamp <= 200 && $temp_time - $timestamp >= -200) {
-    if ($api_key != "") {
-      $temp_hash = md5($api_key . $timestamp);
-      if ($temp_hash == $hash) {
-        return TRUE;
-      }
-      else {
-        $error_data = array(
-          'message' => t('Could not match hash'),
-          'error_code' => 405,
-          'status' => "error",
-        );
-        return $error_data;
-      }
-    }
-    else {
-      $error_data = array(
-        'message' => t('Skyword API key not set'),
-        'error_code' => 401,
-        'status' => "error",
-      );
-      return $error_data;
-    }
-  }
-  watchdog('user', 'Invalid connection attempt - bad timestamp used');
-  $error_data = array(
-    'message' => 'Bad timestamp used. Timestamp sent: ' . $timestamp,
-    'error_code' => 401,
-    'status' => "error",
-  );
-  return $error_data;
-}
-/**
- * Adds permission.
- */
-function skyword_permission() {
-  return array(
-    'Access Skyword Admin' => array(
-      'title' => t('Access Skyword Admin'),
-      'description' => t('access Skyword admin'),
-    ),
-  );
-}
-/**
- * Adds menu item to admin interface.
- */
-function skyword_menu() {
-  $items = array();
-  $items['admin/settings/skyword'] = array(
-    'title' => 'Skyword',
-    'description' => 'Allows administrators to configure the Skyword module',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('skyword_adminpage'),
-    'file' => 'skyword.admin.inc',
-    'access arguments' => array('administer skyword settings'),
-    'type' => MENU_NORMAL_ITEM,
-  );
-  return $items;
-}
