diff --git a/title.core.inc b/title.core.inc
index db8a3b1..205b115 100644
--- a/title.core.inc
+++ b/title.core.inc
@@ -106,18 +106,14 @@ function title_field_term_description_submit(&$values, $legacy_field, $info, $la
  * Sync callback for the text field type.
  */
 function title_field_text_sync_get($entity_type, $entity, $legacy_field, $info, $langcode) {
-  $wrapper = entity_metadata_wrapper($entity_type, $entity);
-  $wrapper->language($langcode);
-  return $wrapper->{$info['field']['field_name']}->raw();
+  return $entity->{$info['field']['field_name']}[$langcode][0]['value'];
 }
 
 /**
  * Sync back callback for the text field type.
  */
 function title_field_text_sync_set($entity_type, $entity, $legacy_field, $info, $langcode) {
-  $wrapper = entity_metadata_wrapper($entity_type, $entity);
-  $wrapper->language($langcode);
-  $wrapper->{$info['field']['field_name']}->set($entity->{$legacy_field});
+  $entity->{$info['field']['field_name']}[$langcode][0]['value'] = $entity->{$legacy_field};
 }
 
 /**
@@ -125,14 +121,12 @@ function title_field_text_sync_set($entity_type, $entity, $legacy_field, $info,
  */
 function title_field_text_with_summary_sync_get($entity_type, $entity, $legacy_field, $info, $langcode) {
   $format_key = $info['additional keys']['format'];
-  $wrapper = entity_metadata_wrapper($entity_type, $entity);
-  $wrapper->language($langcode);
   $field_name = $info['field']['field_name'];
   // Return values only if there is any available to process for the current
   // language.
-  if (is_array($wrapper->{$field_name}->value())) {
-    $entity->{$format_key} = $wrapper->{$field_name}->format->raw();
-    return $wrapper->{$field_name}->value->raw();
+  if (!empty($entity->{$field_name}[$langcode]) && is_array($entity->{$field_name}[$langcode])) {
+    $entity->{$format_key} = $entity->{$field_name}[$langcode][0]['format'];
+    return $entity->{$field_name}[$langcode][0]['value'];
   }
   return NULL;
 }
@@ -142,8 +136,6 @@ function title_field_text_with_summary_sync_get($entity_type, $entity, $legacy_f
  */
 function title_field_text_with_summary_sync_set($entity_type, $entity, $legacy_field, $info, $langcode) {
   $format_key = $info['additional keys']['format'];
-  $value = array('value' => $entity->{$legacy_field}, 'format' => $entity->{$format_key});
-  $wrapper = entity_metadata_wrapper($entity_type, $entity);
-  $wrapper->language($langcode);
-  $wrapper->{$info['field']['field_name']}->set($value);
+  $item = array('value' => $entity->{$legacy_field}, 'format' => $entity->{$format_key});
+  $entity->{$info['field']['field_name']}[$langcode][0] = $item;
 }
diff --git a/title.info b/title.info
index fbb1bea..a6f87fd 100644
--- a/title.info
+++ b/title.info
@@ -4,4 +4,3 @@ core = 7.x
 package = Fields
 files[] = title.module
 files[] = tests/title.test
-dependencies[] = entity
diff --git a/title.module b/title.module
index 5aea248..b3d9f54 100644
--- a/title.module
+++ b/title.module
@@ -438,6 +438,10 @@ function title_field_sync_set($entity_type, $entity, $legacy_field, $info) {
 /**
  * Provide the original entity language.
  *
+ * If a language property is defined for the current entity we synchronize the
+ * field value using the entity language, otherwise we fall back to
+ * LANGUAGE_NONE.
+ *
  * @param $entity_type
  * @param $entity
  *
@@ -445,15 +449,14 @@ function title_field_sync_set($entity_type, $entity, $legacy_field, $info) {
  *   A language code
  */
 function title_entity_language($entity_type, $entity) {
-  // If a language property is defined for the current entity we synchronize
-  // the field value using the entity language, otherwise we fall back to
-  // LANGUAGE_NONE.
-  try {
-    return entity_metadata_wrapper($entity_type, $entity)->language->value();
+  if (module_exists('entity_translation')) {
+    $handler = entity_translation_get_handler($entity_type, $entity);
+    $langcode = $handler->getLanguage();
   }
-  catch (EntityMetadataWrapperException $e) {
-    return LANGUAGE_NONE;
+  else {
+    $langcode = entity_language($entity_type, $entity);
   }
+  return !empty($langcode) ? $langcode : LANGUAGE_NONE;
 }
 
 /**
@@ -492,7 +495,7 @@ function title_field_attach_submit($entity_type, $entity, $form, &$form_state) {
     foreach ($fr_info as $legacy_field => $info) {
       if (!empty($form[$legacy_field]['#field_replacement'])) {
         $field_name = $info['field']['field_name'];
-        $langcode = $form[$field_name]['#language'];
+        $langcode = title_entity_language($entity_type, $entity);
 
         // Give a chance to operate on submitted values either.
         if (!empty($info['callbacks']['submit'])) {
