diff --git a/cmis_field/cmis_field.admin.inc b/cmis_field/cmis_field.admin.inc
new file mode 100644
index 0000000..cff66ef
--- /dev/null
+++ b/cmis_field/cmis_field.admin.inc
@@ -0,0 +1,121 @@
{+<?php+}

{+function cmis_field_admin_ajax_browse($widget_id, $path_id = '') {+}
{+  module_load_include('api.inc', 'cmis');+}
{+  module_load_include('utils.inc', 'cmis_browser');+}

{+  $cssBrowserID = 'cmis-field-browse-form';+}
{+  $content = '';+}
{+  try {+}
{+    $repository = cmis_get_repository();+}
{+    $root = cmisapi_getObjectByPath($repository->repositoryId, "/");+}
{+    $rootId = $root->properties['cmis:objectId'];+}

{+    if ($path_id == "") {+}
{+      $object = $root;+}
{+    }+}
{+    else {+}
{+      $object = cmisapi_getObject($repository->repositoryId, base64_decode($path_id));+}
{+    }+}

{+    switch ($object->properties['cmis:baseTypeId']) {+}
{+      case 'cmis:document':+}
{+      $commands[] = ajax_command_invoke('#' . $cssBrowserID, 'dialog', array("close"));+}
{+      $commands[] = ajax_command_invoke('#' . $widget_id . '-title', 'val', array($object->properties['cmis:name']));+}
{+      $commands[] = ajax_command_invoke('#' . $widget_id . '-path', 'val', array($object->properties['cmis:objectId']));+}

{+      break;+}
{+      case 'cmis:folder':+}
{+      $children = _cmis_field_content_get_folder($repository, $object, array_slice(explode('/', $_GET['q']), 5));+}

{+      $content = array();+}

{+      foreach ($children as $child) {+}
{+        $childUrl =  _cmis_field_browse_url($child->id, $widget_id);+}
{+        $content[] = array(+}
{+          'browse-url' => $childUrl,+}
{+          'title' => $child->properties['cmis:name'],+}
{+          'type' => $child->properties['cmis:baseTypeId'],+}
{+          'author' => $child->properties['cmis:createdBy'],+}
{+          'updated' => new DateTime($child->properties['cmis:lastModificationDate']),+}
{+          'size' => isset($child->properties['cmis:contentStreamLength']) ? $child->properties['cmis:contentStreamLength'] : '',+}
{+          'mimetype' => isset($child->properties['cmis:contentStreamMimeType']) ? $child->properties['cmis:contentStreamMimeType'] : '',+}
{+        );+}
{+      }+}

{+      $parents = _cmis_field_object_parents($object, $repository->repositoryId, $rootId, $widget_id);+}
{+      $commands[] = ajax_command_remove('#' . $cssBrowserID);+}
{+      $commands[] = ajax_command_append('html',+}
{+        theme('cmis_field_browser', array(+}
{+          'children' => $content,+}
{+          'breadcrumbs' => $parents,+}
{+          '#attributes' => array(+}
{+            'id' => $cssBrowserID,+}
{+          ),+}
{+        ))+}
{+      );+}

{+      $title = $object->properties['cmis:name'];+}

{+      if (empty($title)) {+}
{+        $title = basename($object->properties['cmis:path']);+}
{+      }+}

{+      $commands[] = ajax_command_invoke('#' . $cssBrowserID, 'dialog', array(array('width' => 'auto', 'resizable' => "false", 'modal' => "true", 'title' => $title)));+}
{+      // Fire attach behaviors for the dialog by doing a dummy insert.+}
{+      $commands[] = ajax_command_append('html', '');+}
{+      break;+}
{+      default:+}
{+      throw new CMISException(t('Unable to handle cmis object @object_id of type @object_type', array(+}
{+        '@object_id' => $object->id,+}
{+        '@object_type' => $object->type+}
{+      )));+}
{+    }+}
{+  }+}
{+  catch (CMISException $e) {+}
{+    $commands[] = ajax_command_alert(t('Cmis Error, %error', array('%error' => $e->getMessage())));+}
{+  }+}

{+  $page = array();+}
{+  $page['#type'] = 'ajax';+}
{+  $page['#commands'] = $commands;+}
{+  return $page;+}
{+}+}

{+function _cmis_field_browse_url($objectId, $widgetId) {+}
{+  $id = base64_encode($objectId);+}
{+  return 'admin/settings/cmis/field/ajax/' . $widgetId . '/' . $id;+}
{+}+}

{+function _cmis_field_object_parents($object, $repoId, $rootId, $widgetId, $parents = array()) {+}
{+  module_load_include('api.inc', 'cmis');+}
{+  $parent = cmisapi_getObject($repoId, $object->properties['cmis:parentId']);+}
{+  if ($parent->properties['cmis:objectId'] == $rootId) {+}
{+    return $parents;+}
{+  }+}
{+  else {+}
{+    array_unshift($parents, array(+}
{+      'title' => $parent->properties['cmis:name'],+}
{+      'properties' => $parent->properties,+}
{+      'url' => _cmis_field_browse_url($parent->properties['cmis:objectId'], $widgetId)+}
{+    ));+}

{+    return _cmis_field_object_parents($parent, $repoId, $rootId, $widgetId, $parents);+}
{+  }+}
{+}+}

{+/**+}
{+ * CMIS folder browser handler.+}
{+ *+}
{+ */+}
{+function _cmis_field_content_get_folder($repository, $object) {+}
{+  try {+}
{+  $children = cmisapi_getChildren($repository->repositoryId, $object->id)->objectList;+}

{+  }+}
{+  catch (CMISException $e) {+}
{+  cmis_error_handler('cmis_browser', $e);+}
{+  return '';+}
{+  }+}
{+  return $children;+}
{+}+}
diff --git a/cmis_field/cmis_field.module b/cmis_field/cmis_field.module
index 955a9b7..b65ff73 100644
--- a/cmis_field/cmis_field.module
+++ b/cmis_field/cmis_field.module
@@ -1,5 +1,54 @@
<?php

{+function cmis_field_menu() {+}

{+  // Entry Level Browser (when clicking the Button beneath a CMIS-Field)+}
{+  $items['admin/settings/cmis/field/ajax'] = array(+}
{+    'title' => 'cmis browse',+}
{+    'page callback' => 'cmis_field_admin_ajax_browse',+}
{+    'page arguments' => array(),+}
{+    'delivery callback' => 'ajax_deliver',+}
{+    'access arguments' => array('access cmis'),+}
{+    'file' => 'cmis_field.admin.inc',+}
{+    'type' => MENU_CALLBACK,+}
{+  );+}

{+  // Successive calls to subfolders go here (notice the wildcard)+}
{+  $items['admin/settings/cmis/field/ajax/%/%'] = array(+}
{+    'title' => 'cmis browse',+}
{+    'page callback' => 'cmis_field_admin_ajax_browse',+}
{+    'page arguments' => array(5,6),+}
{+    'delivery callback' => 'ajax_deliver',+}
{+    'access arguments' => array('access cmis'),+}
{+    'file' => 'cmis_field.admin.inc',+}
{+    'type' => MENU_CALLBACK,+}
{+  );+}


{+  return $items;+}
{+}+}

{+/**+}
{+ * Allow CMIS fields to be themed via Drupal Theming+}
{+ *+}
{+ * @implements hook_theme()+}
{+ */+}
{+function cmis_field_theme() {+}
{+  $items['cmis_field_browser'] = array(+}
{+    'file' => 'cmis_field.theme.inc',+}
{+  );+}

{+  $items['cmis_field_browse_children'] = array(+}
{+    'file' => 'cmis_field.theme.inc',+}
{+  );+}

{+  $items['cmis_field_browse_breadcrumbs'] = array(+}
{+    'file' => 'cmis_field.theme.inc',+}
{+  );+}

{+  return $items;+}
{+}+}

/**
 * Implementation of hook_field_info()
 *
@@ -63,10 +112,6 @@ function cmis_field_field_instance_settings_form($field, $instance) {
    '#default_value' => isset($settings['cmis_field_rootFolderPath']) ? $settings['cmis_field_rootFolderPath'] : '',
  );

[-  $form['#attached']['js'] = array(-]
[-    array('data' => drupal_get_path('module', 'cmis_field') . '/js/cmis_field.js'),-]
[-  );-]

  return $form;
}

@@ -96,6 +141,7 @@ function cmis_field_field_widget_info() {
 * @return array - form element
 */
function cmis_field_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  {+drupal_add_library('system', 'ui.dialog');+}
  $title = isset($items[$delta]['title']) ? $items[$delta]['title'] : '';
  $path = isset($items[$delta]['path']) ? $items[$delta]['path'] : '';
  $element += array(
@@ -104,24 +150,51 @@ function cmis_field_field_widget_form(&$form, &$form_state, $field, $instance, $
  $element['path'] = array();
  $element['title'] = array();

  {+$widget_id = 'edit-cmis-field-' . preg_replace("/_/", "-", $instance['field_name']) . '-' . $delta;+}

  $element['title'] += array(
    '#type' => 'textfield',
    '#default_value' => $title,
    '#attributes' => array('class' => [-array('edit-field-cmis-field')),-]{+array('edit-field-cmis-field'), 'id' => $widget_id . '-title'),+}
    '#title_display' => 'before',
    '#title' => check_plain($instance['label']),
  );

  $element['path'] += array(
    '#type' => 'hidden',
    '#attributes' => array('class' => array('edit-field-cmis-path', [-'search-form')),-]{+'search-form'), 'id' => $widget_id . '-path'),+}
    '#default_value' => $path,
  );

  [-$element['#attached']['js']-]{+$root_folder_path = $instance['settings']['cmis_field_rootFolderPath'];+}
{+  $ajax_path = 'admin/settings/cmis/field/ajax/' . $widget_id . '/';+}

{+  if ($root_folder_path != '') {+}
{+    module_load_include('api.inc', 'cmis');+}
{+    module_load_include('utils.inc', 'cmis_browser');+}

{+    // Invoke CMIS service+}
{+    $repository = cmis_get_repository();+}

{+    $object = cmisapi_getObjectByPath($repository->repositoryId, $root_folder_path);+}
{+    $ajax_path .= base64_encode($object->properties['cmis:objectId']);+}
{+  }+}

{+  $button+} = array(
    [-array('data'-]{+'#type'+} => [-drupal_get_path('module', 'cmis_field') . '/js/cmis_field.js'),-]
[-    array('data'-]{+'button',+}
{+    '#value' => t('Browse CMIS repository'),+}
{+    '#submit'+} => [-array('cmispath'-]{+array(),+}
{+    '#ajax' => array(+}
{+      'path'+} => [-$instance['settings']['cmis_field_rootFolderPath']), 'type'-]{+$ajax_path,+}
{+    ),+}
{+    '#limit_validation_errors'+} => [-'setting'),-]{+array(),+}
  );

  {+$element['browse'] = $button;+}
{+  $element['#type'] = "markup";+}
{+  $element['#theme_wrappers'] = array('container');+}
{+  $element['#attributes'] = array('id' => $widget_id);+}

  return $element;
}

diff --git a/cmis_field/cmis_field.theme.inc b/cmis_field/cmis_field.theme.inc
new file mode 100644
index 0000000..4a723ca
--- /dev/null
+++ b/cmis_field/cmis_field.theme.inc
@@ -0,0 +1,80 @@
{+<?php+}

{+function theme_cmis_field_browser($variables) {+}
{+  $breadcrumbs = theme('cmis_field_browse_breadcrumbs', array('context' => $variables['breadcrumbs'], 'ajax' => TRUE));+}
{+  $children = theme('cmis_field_browse_children', array('context' => $variables['children']));+}

{+  return theme('container', array(+}
{+    'element' => array(+}
{+      '#attributes' => $variables['#attributes'],+}
{+      '#children' => $breadcrumbs . $children,+}
{+    ),+}
{+  ));+}
{+}+}

{+function theme_cmis_field_browse_breadcrumbs($variables) {+}
{+  $links = array();+}

{+  foreach ($variables['context'] as $child) {+}
{+    $links[] = l($child['title'], $child['url'], array(+}
{+      'attributes' => array(+}
{+        'class' => @$variables['ajax'] ? 'use-ajax' : ''+}
{+        )+}
{+      )+}
{+    );+}
{+  }+}

{+  return theme('breadcrumb', array('breadcrumb' => $links));+}
{+}+}

{+/**+}
{+ * Custom theme for cmis_browser_browse action+}
{+ *+}
{+ * @param $children+}
{+ */+}

{+function theme_cmis_field_browse_children($variables) {+}
{+  $header = array(t('name'), t('type'), t('size'), t('author'), t('last modified'), '');+}
{+  $rows = array();+}
{+  $folder_img = theme('image', array('path' => drupal_get_path('module', 'cmis_browser') .'/images/space.gif'));+}
{+  $document_img = theme('image', array('path' => drupal_get_path('module', 'cmis_browser') .'/images/file.png'));+}

{+  foreach ($variables['context'] as $child) {+}
{+    $author = $child['author'];+}
{+    $updated = format_date($child['updated']->getTimestamp());+}
{+    $actions = array();+}

{+    switch ($child['type']) {+}
{+      case 'cmis:folder':+}
{+        $icon = $folder_img;+}

{+        $link = l($child['title'], $child['browse-url'], array(+}
{+          'attributes' => array(+}
{+            'class' => array(+}
{+              'use-ajax',+}
{+            ),+}
{+          ),)+}
{+        );+}

{+        $mimetype = 'Space';+}
{+        $size = '';+}
{+        break;+}
{+      default:+}
{+        $icon = $document_img;+}
{+        $link = l($child['title'], $child['browse-url'], array(+}
{+          'attributes' => array(+}
{+            'class' => array(+}
{+              'use-ajax',+}
{+            ),+}
{+          ),)+}
{+        );+}

{+        $mimetype = $child['mimetype'];+}
{+        $size = format_size($child['size']);+}
{+    }+}

{+    $rows[] = array($icon .' '. $link, $mimetype, $size, $author, $updated, theme('item_list', array('items' => $actions, 'title' => NULL, 'type' => 'ul', 'attributes' => array('class'=>'actions'))));+}
{+  }+}

{+  return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('cmis_field_browse_children'))));+}
{+}+}
diff --git a/cmis_field/js/cmis_field.js b/cmis_field/js/cmis_field.js
deleted file mode 100644
index 150104a..0000000
--- a/cmis_field/js/cmis_field.js
+++ /dev/null
@@ -1,56 +0,0 @@
[-(function($){-]

[-  Drupal.behaviors.cmisField = {-]
[-    attach: function(context, settings) {-]
[-      //TODO: This selector doesn't seem right - will it work if there's a different default lang.?-]
[-      //$("#edit-field-cmis-und-0-title", context).after('<input type="button" id="edit-cmis-field" class="cmis-field-insert-button form-submit" value="Browse" />');-]
[-      $(".edit-field-cmis-field", context).after('<input type="button" id="edit-cmis-field" class="cmis-field-insert-button form-submit" value="Browse" />');-]
[-      $("#edit-instance-settings-cmis-field-rootfolderpath", context).after('<input type="button" id="edit-cmis-settings" class="cmis-field-insert-button form-submit" value="Browse" />');-]
[-      $('.cmis-field-insert-button').click(function() {-]
[-        var caller = '';-]
[-        if ($(this).attr('id') == 'edit-cmis-settings') {-]
[-          caller = 'settings';-]
[-        }-]
[-        else {-]
[-          caller = 'widget';-]
[-        }-]
[-        var rootDir = Drupal.settings.cmispath;-]
[-        //TODO: Make this a modal, not a popup (will be much harder to manage context when clicking around the cmis browser)-]
[-        if (rootDir == true){-]
[-	      rootDir === '';-]
[-	      window.open('/cmis/browser?type=popup&caller=' + caller, 'cmisBrowser', 'width=800,height=500,resizable');-]
[-        }else{-]
[-          window.open('/cmis/browser' + rootDir + '?type=popup&caller=' + caller, 'cmisBrowser', 'width=800,height=500,resizable');-]
[-        }-]
[-        return false;-]
[-      });-]
[-      -]
[-      $(".cmis-field-insert", context).click(function() {-]
[-        if($.query['caller'] == 'settings') {-]
[-          var cmispath = $(this).attr('href');-]
[-          $('#edit-instance-settings-cmis-field-rootfolderpath', window.opener.document).val(cmispath.replace("//", "/"));-]
[-        }-]
[-        else {-]
[-          var cmispath = $(this).attr('id');-]
[-          var cmisname = $(this).attr('name');-]
[-          //$('#edit-field-cmis-und-0-title', window.opener.document).val(cmisname);          -]
[-          $('.edit-field-cmis-field', window.opener.document).val(cmisname);-]
[-          $('.edit-field-cmis-path', window.opener.document).val(cmispath);-]
[-        }-]
[-        window.close();-]
[-        return false;-]
[-      });-]
[-    }-]
[-  };-]
[-  -]
[-  $.query = (function(a) {-]
[-    if (a == "") return {};-]
[-    var b = {};-]
[-    for (var i = 0; i < a.length; ++i)-]
[-    {-]
[-        var p=a[i].split('=');-]
[-        b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));-]
[-    }-]
[-    return b;-]
[-})(window.location.search.substr(1).split('&'))-]
[-})(jQuery);-]
