diff --git a/clone.info b/clone.info
index 165f8a8..ffd0572 100644
--- a/clone.info
+++ b/clone.info
@@ -2,5 +2,5 @@ name = "Node clone"
 description = "Allows users to clone (copy then edit) an existing node."
 core = 7.x
 
+files[] = views/views_handler_field_node_link_clone.inc
 configure = admin/config/content/clone
-
diff --git a/clone.module b/clone.module
index 29003dd..2fdc896 100644
--- a/clone.module
+++ b/clone.module
@@ -90,13 +90,11 @@ function clone_node_type($op, $type_obj) {
 }
 
 /**
-* Implementation of hook_views_api.
+* Implements hook_views_api.
 */
 function clone_views_api() {
-  //TODO
-  return;
   return array(
-    'api' => 2,
+    'api' => 3,
     'path' => drupal_get_path('module', 'clone') .'/views',
   );
 }
diff --git a/views/clone.views.inc b/views/clone.views.inc
index adfe6b3..c3dbc1b 100644
--- a/views/clone.views.inc
+++ b/views/clone.views.inc
@@ -1,23 +1,7 @@
 <?php
 
 /**
-* Implementation of hook_views_handlers()
-*/
-function clone_views_handlers() {
-  return array(
-    'info' => array(
-      'path' => drupal_get_path('module', 'clone') . '/views',
-    ),
-    'handlers' => array(
-      'views_handler_field_node_link_clone' => array(
-        'parent' => 'views_handler_field_node_link',
-      ),
-    ),
-  );
-}
-
-/**
-* Implementation of hook_views_data_alter()
+* Implements hook_views_data_alter()
 */
 function clone_views_data_alter(&$views_data) {
   $views_data['node']['clone_node'] = array(
@@ -28,4 +12,3 @@ function clone_views_data_alter(&$views_data) {
     ),
   );
 }
-
diff --git a/views/views_handler_field_node_link_clone.inc b/views/views_handler_field_node_link_clone.inc
index b6f2cf6..a4bcc9f 100644
--- a/views/views_handler_field_node_link_clone.inc
+++ b/views/views_handler_field_node_link_clone.inc
@@ -6,26 +6,23 @@
 * Closely modeled after views/modules/node/views_handler_field_node_link_edit.inc
 */
 class views_handler_field_node_link_clone extends views_handler_field_node_link {
-  function construct() {
-    parent::construct();
-    $this->additional_fields['uid'] = 'uid';
-    $this->additional_fields['type'] = 'type';
-    $this->additional_fields['format'] = array('table' => 'node_revisions', 'field' => 'format');
-  }
-
-  function render($values) {
-    // Insure that user has access to clone this node.
-    $node = new stdClass();
-    $node->nid = $values->{$this->aliases['nid']};
-    $node->uid = $values->{$this->aliases['uid']};
-    $node->type = $values->{$this->aliases['type']};
-    $node->format = $values->{$this->aliases['format']};
-    $node->status = 1; // unpublished nodes ignore access control
+  /**
+   * Renders the link.
+   */
+  function render_link($node, $values) {
+    // Ensure user has access to edit this node.
+//    if (!node_access('update', $node)) {
+//      return;
+//    }
     if (!clone_access_cloning($node)) {
       return;
     }
 
+    $this->options['alter']['make_link'] = TRUE;
+    $this->options['alter']['path'] = "node/$node->nid/clone";
+    $this->options['alter']['query'] = drupal_get_destination();
+
     $text = !empty($this->options['text']) ? $this->options['text'] : t('clone');
-    return l($text, "node/$node->nid/clone", array('query' => drupal_get_destination()));
+    return $text;
   }
 }
