diff --git a/linkchecker.module b/linkchecker.module
index 82fa2cc..f8afb4d 100644
--- a/linkchecker.module
+++ b/linkchecker.module
@@ -451,6 +451,7 @@ function linkchecker_node_delete($node) {
 function linkchecker_node_insert($node) {
   // The node is going to be published.
   if ($node->status && _linkchecker_scan_nodetype($node->type)) {
+    linkchecker_entity_load(array($node), 'node');
     _linkchecker_add_node_links($node);
   }
 }
@@ -560,6 +561,15 @@ function linkchecker_form_alter(&$form, &$form_state, $form_id) {
 }
 
 /**
+ * Implement hook_entity_load().
+ */
+function linkchecker_entity_load($entities, $type) {
+  foreach ($entities as $entity) {
+    $entity->entity_type = $type;
+  }
+}
+
+/**
  * Custom submit handler for block add page.
  */
 function linkchecker_block_custom_add_form_submit($form, &$form_state) {
@@ -594,7 +604,10 @@ function linkchecker_block_custom_delete_form_submit($form, &$form_state) {
 function _linkchecker_add_node_links($node, $skip_missing_links_detection = FALSE) {
   // Get current node language options for url() functions.
   $languages = language_list();
-  $url_options = empty($node->language) ? array('absolute' => TRUE) : array('language' => $languages[$node->language], 'absolute' => TRUE);
+  $url_options =
+  	(empty($node->language) || empty($languages[$node->language]))
+  	? array('absolute' => TRUE)
+  	: array('language' => $languages[$node->language], 'absolute' => TRUE);
 
   $filter = new stdClass;
   $filter->settings['filter_url_length'] = 72;
@@ -622,6 +635,7 @@ function _linkchecker_add_node_links($node, $skip_missing_links_detection = FALS
       $urlhash = drupal_hash_base64($url);
       $link = db_query('SELECT lid FROM {linkchecker_link} WHERE urlhash = :urlhash', array(':urlhash' => $urlhash))->fetchObject();
       if (!$link) {
+        $link = new stdClass();
         $link->urlhash = $urlhash;
         $link->url = $url;
         $link->status = _linkchecker_link_check_status_filter($url);
@@ -713,6 +727,7 @@ function _linkchecker_add_comment_links($comment, $skip_missing_links_detection
       $urlhash = drupal_hash_base64($url);
       $link = db_query('SELECT lid FROM {linkchecker_link} WHERE urlhash = :urlhash', array(':urlhash' => $urlhash))->fetchObject();
       if (!$link) {
+        $link = new stdClass();
         $link->urlhash = $urlhash;
         $link->url = $url;
         $link->status = _linkchecker_link_check_status_filter($url);
@@ -802,6 +817,7 @@ function _linkchecker_add_block_custom_links($block_custom, $bid, $skip_missing_
       $urlhash = drupal_hash_base64($url);
       $link = db_query('SELECT lid FROM {linkchecker_link} WHERE urlhash = :urlhash', array(':urlhash' => $urlhash))->fetchObject();
       if (!$link) {
+        $link = new stdClass();
         $link->urlhash = $urlhash;
         $link->url = $url;
         $link->status = _linkchecker_link_check_status_filter($url);
@@ -1013,8 +1029,11 @@ function linkchecker_parse_fields($bundle, $entity, $type) {
   $field_list = field_info_fields();
 
   foreach ($field_list as $name => $field) {
-    if (!empty($field['bundles'][$bundle]) && in_array($type, $field['bundles'][$bundle])) {
+    if (!empty($field['bundles'][$entity->entity_type]) && in_array($type, $field['bundles'][$entity->entity_type])) { 
       // FIXME: This is because a php parse error.
+      if (empty($entity->$name)) {
+      	continue;
+      }
       $entity_field = $entity->$name;
 
       switch ($field['type']) {
