diff --git a/README.txt b/README.txt
index 1a12e9a..ad83ab6 100644
--- a/README.txt
+++ b/README.txt
@@ -24,12 +24,6 @@ Configuration
   If you are registered to the VirusTotal community you will find you key at
   http://www.virustotal.com/vt-community/inbox.html on the "Public API" tab.
 
-Sitebuilding
-  If you just need the basic API functionality you should have a look at the
-  VirusTotal Rules submodule. With Rules 2.x and the VirusTotal API Rules
-  integration you can handle most of the API functionality without writing
-  any line of code.
-
 Development
   If you want to use or extend the VirusTotal API you should have a look at the
   VirusTotal Examples submodule. It will show you how to use the API in detail.
diff --git a/virustotal.class.php b/virustotal.class.php
index b30bde2..7ec2c63 100644
--- a/virustotal.class.php
+++ b/virustotal.class.php
@@ -104,13 +104,8 @@ class VirusTotal {
    */
   public function scanFile($fobj) {
 
-    // Try to get real path of file.
-    if ($wrapper = file_stream_wrapper_get_instance_by_uri($fobj->uri)) {
-      $realPath = $wrapper->realpath();
-    }
-    else {
-      return FALSE;
-    }
+    // Get real path of file.
+    $realPath = $fobj->filepath;
 
     // Set HTTP multipart file information, so cURL can load and send it.
     return ($this->apiRequest(VIRUSTOTAL_FUNC_SCAN_FILE,
@@ -253,7 +248,7 @@ class VirusTotal {
     }
     else {
       // Decode returned json data to an array.
-      $result_data = drupal_json_decode($json_data);
+      $result_data = json_decode($report_data, TRUE);
     }
 
     // Close cURL handle.
diff --git a/virustotal.info b/virustotal.info
index 473d0b4..84bc3d5 100644
--- a/virustotal.info
+++ b/virustotal.info
@@ -1,6 +1,6 @@
 name = VirusTotal API
 description = Provides a framework for using the virustotal.com API.
 package = VirusTotal
-core = 7.x
-files[] = virustotal.class.php
-configure = admin/config/system/virustotal
+core = 6.x
+php = 5.0
+configure = admin/settings/virustotal
diff --git a/virustotal.module b/virustotal.module
index f20f1b6..f67de8b 100644
--- a/virustotal.module
+++ b/virustotal.module
@@ -6,12 +6,16 @@
  * Contains configuration functionality for VirusTotal API.
  */
 
+// D6 has no file property in .info, so we have to include our class manually.
+include_once 'virustotal.class.php';
+
 /**
  * Implements hook_menu().
  */
 function virustotal_menu() {
-  $items['admin/config/system/virustotal'] = array(
+  $items['admin/settings/virustotal'] = array(
     'title' => 'VirusTotal',
+    'description' => 'Configure VirusTotal API settings.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('virustotal_admin_configuration_form'),
     'access arguments' => array('administer site configuration'),
@@ -22,7 +26,8 @@ function virustotal_menu() {
 /**
  * Form callback for administrative configuration.
  */
-function virustotal_admin_configuration_form($form, &$form_state) {
+function virustotal_admin_configuration_form() {
+  $form = array();
 
   // Textfield input for VT API Key.
   $form['virustotal_api_key'] = array(
diff --git a/virustotal_example/virustotal_example.info b/virustotal_example/virustotal_example.info
index f4c61b6..cd1d647 100644
--- a/virustotal_example/virustotal_example.info
+++ b/virustotal_example/virustotal_example.info
@@ -1,5 +1,6 @@
 name = VirusTotal API Examples
 description = Examples on how to use the VirusTotal API module.
 package = VirusTotal
-core = 7.x
+core = 6.x
+php = 5.0
 dependencies[] = virustotal
diff --git a/virustotal_example/virustotal_example.module b/virustotal_example/virustotal_example.module
index 1f4cd6c..0122c11 100644
--- a/virustotal_example/virustotal_example.module
+++ b/virustotal_example/virustotal_example.module
@@ -58,17 +58,15 @@ function virustotal_example_menu() {
  * Provides an interface to send files and URLs, request reports
  * or make comments.
  */
-function virustotal_example_form($form, &$form_state) {
-
-  // Vertical tabs.
-  $form['examples'] = array(
-    '#type' => 'vertical_tabs',
-  );
+function virustotal_example_form() {
+  $form = array();
 
   // Send an file for analysis.
   $form['examples']['send_file'] = array(
     '#type' => 'fieldset',
     '#title' => t('Send a file'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
   );
   $form['examples']['send_file']['upload'] = array(
     '#type' => 'file',
@@ -85,6 +83,8 @@ function virustotal_example_form($form, &$form_state) {
   $form['examples']['send_url'] = array(
     '#type' => 'fieldset',
     '#title' => t('Send an URL'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
   );
   $form['examples']['send_url']['url'] = array(
     '#type' => 'textfield',
@@ -101,6 +101,8 @@ function virustotal_example_form($form, &$form_state) {
   $form['examples']['report_request'] = array(
     '#type' => 'fieldset',
     '#title' => t('Request a report'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
   );
   $form['examples']['report_request']['report_resource'] = array(
     '#type' => 'textfield',
@@ -125,6 +127,8 @@ function virustotal_example_form($form, &$form_state) {
   $form['examples']['make_comment'] = array(
     '#type' => 'fieldset',
     '#title' => t('Create a comment'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
   );
   $form['examples']['make_comment']['comment_resource'] = array(
     '#type' => 'textfield',
@@ -146,8 +150,7 @@ function virustotal_example_form($form, &$form_state) {
   );
   $form['examples']['make_comment']['file_tags'] = array(
     '#type' => 'checkboxes',
-    '#title' => t('Tags'),
-    // If comment_type 'file' is selected the following list will be shown.
+    '#title' => t('File tags'),
     '#options' => array(
       'goodware' => t('Goodware'),
       'malware' => t('Malware'),
@@ -165,8 +168,7 @@ function virustotal_example_form($form, &$form_state) {
   );
   $form['examples']['make_comment']['url_tags'] = array(
     '#type' => 'checkboxes',
-    '#title' => t('Tags'),
-    // If comment_type 'url' is selected the following list will be shown.
+    '#title' => t('URL tags'),
     '#options' => array(
       'malicious' => t('Malicious'),
       'benign' => t('Benign'),
@@ -187,6 +189,8 @@ function virustotal_example_form($form, &$form_state) {
     '#submit' => array('virustotal_example_form_submit_make_comment'),
   );
 
+  $form['#attributes'] = array('enctype' => "multipart/form-data");
+
   return $form;
 }
 
@@ -200,12 +204,8 @@ function virustotal_example_form($form, &$form_state) {
  */
 function virustotal_example_form_submit_file($form, &$form_state) {
 
-  // Rebuild the form directly so submitted values will be held.
-  $form_state['rebuild'] = TRUE;
-
   // Save uploaded file temporary.
-  $validators = array('file_validate_extensions' => array());
-  $file = file_save_upload('upload', $validators);
+  $file = file_save_upload('upload');
 
   if ($file == FALSE) {
     drupal_set_message(t('File could not be saved.'), 'error');
@@ -237,9 +237,6 @@ function virustotal_example_form_submit_file($form, &$form_state) {
  */
 function virustotal_example_form_submit_url($form, &$form_state) {
 
-  // Rebuild the form directly so submitted values will be held.
-  $form_state['rebuild'] = TRUE;
-
   // Submits the URL for scanning.
   $vt = new VirusTotal();
   $response = $vt->scanUrl($form_state['values']['url']);
@@ -255,9 +252,6 @@ function virustotal_example_form_submit_url($form, &$form_state) {
  */
 function virustotal_example_form_submit_report_request($form, &$form_state) {
 
-  // Rebuild the form directly so submitted values will be held.
-  $form_state['rebuild'] = TRUE;
-
   // Request a file / URL report.
   $vt = new VirusTotal();
   switch ($form_state['values']['report_type']) {
@@ -292,9 +286,6 @@ function virustotal_example_form_submit_report_request($form, &$form_state) {
  */
 function virustotal_example_form_submit_make_comment($form, &$form_state) {
 
-  // Rebuild the form directly so submitted values will be held.
-  $form_state['rebuild'] = TRUE;
-
   // Creates a comment on a file / URL report.
   $vt = new VirusTotal();
   $response = $vt->makeComment($form_state['values']['comment_type'],
diff --git a/virustotal_rules/README.txt b/virustotal_rules/README.txt
deleted file mode 100644
index 1608c88..0000000
--- a/virustotal_rules/README.txt
+++ /dev/null
@@ -1,34 +0,0 @@
--- SUMMARY --
-
-VirusTotal API Rules
-
-This module provides the VirusTotal API Rules integration.
-
-
--- REQUIREMENTS --
-
-VirusTotal API main module with a valid API key.
-Rules 2.x
-
-
--- How to use it? --
-
-Install as usual, see http://drupal.org/node/895232 for further information.
-
-Following will be provided to rules:
-  Actions
-    Send a File
-      Sends a File to VirusTotal service to queue it for scanning.
-    Send an URL
-      Sends an URL to VirusTotal service and queue it for scanning.
-    Retrieve a file report
-      Tries to retrieve a file scan report.
-    Retrieve an URL report
-      Tries to retrieve a URL scan report.
-    Comment a report
-      Creates a comment on a file or URL report.
-  Events
-    Before sending a request
-      Event that triggers before an API request is send.
-    After sending a request
-      Event that triggers after an API request was send.
diff --git a/virustotal_rules/virustotal_rules.info b/virustotal_rules/virustotal_rules.info
deleted file mode 100644
index 38078ce..0000000
--- a/virustotal_rules/virustotal_rules.info
+++ /dev/null
@@ -1,6 +0,0 @@
-name = VirusTotal Rules
-description = Provides Rules integration to send files and request reports.
-package = VirusTotal
-core = 7.x
-dependencies[] = rules
-dependencies[] = virustotal
diff --git a/virustotal_rules/virustotal_rules.module b/virustotal_rules/virustotal_rules.module
deleted file mode 100644
index c62f828..0000000
--- a/virustotal_rules/virustotal_rules.module
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/**
- * @file
- * Necessary file for declaring the VirusTotal Rules integration
- * module and for hooks triggering Rules events.
- *
- * See virustotal_rules.rules.inc for the actual rules plugins.
- */
-
-/**
- * Implements of hook_virustotal_query_alter().
- *
- * Triggers right before an API request is send to VirusTotal.
- */
-function virustotal_rules_virustotal_query_alter($data, $function) {
-  rules_invoke_event('virustotal_rules_event_pre_request', $function);
-}
-
-/**
- * Implements of hook_virustotal_result_alter().
- *
- * Triggers right before the API results are returned.
- */
-function virustotal_rules_virustotal_result_alter($result_data, $function) {
-  rules_invoke_event('virustotal_rules_event_post_request', $result_data, $function);
-}
diff --git a/virustotal_rules/virustotal_rules.rules.inc b/virustotal_rules/virustotal_rules.rules.inc
deleted file mode 100644
index 35f1cd4..0000000
--- a/virustotal_rules/virustotal_rules.rules.inc
+++ /dev/null
@@ -1,413 +0,0 @@
-<?php
-
-/**
- * @file
- * Data types, Actions and events of VirusTotal API Rules integration.
- *
- * @addtogroup rules
- * @{
- */
-
-/**
- * Implements hook_rules_data_info().
- *
- * Declares meta-data about data types for VirusTotal Rules.
- */
-function virustotal_rules_rules_data_info() {
-  return array(
-    // Data type that represents the API response.
-    'virustotal_response' => array(
-      'label' => t('VirusTotal API response'),
-      'property info' => _virustotal_rules_rules_response_info(),
-    ),
-    // Data type that holds scan report contents.
-    'virustotal_report' => array(
-      'label' => t('VirusTotal Report'),
-      'property info' => _virustotal_rules_rules_report_info(),
-    ),
-    // Data type used for scan reports to represent each AV result.
-    'virustotal_finding' => array(
-      'label' => t('VirusTotal AV Finding'),
-      'wrap' => TRUE,
-      'property info' => _virustotal_rules_rules_finding_info(),
-    ),
-  );
-}
-
-/**
- * Defines property info for VirusTotal API responses.
- * A data type that represents the API response.
- */
-function _virustotal_rules_rules_response_info() {
-  return array(
-    'result' => array(
-      'type' => 'integer',
-      'label' => t('Result status code'),
-      'options list' => 'virustotal_rules_response_status_codes',
-    ),
-    'scan_id' => array(
-      'type' => 'text',
-      'label' => ('Scan ID as returned by the file upload API'),
-    ),
-    'permalink' => array(
-      'type' => 'text',
-      'label' => ('Permanent link to report page'),
-    ),
-    'report' => array(
-      'type' => 'virustotal_report',
-      'label' => t('Report data'),
-    ),
-  );
-}
-
-/**
- * Defines property info for VirusTotal reports.
- * A data type that holds scan report contents.
- */
-function _virustotal_rules_rules_report_info() {
-  return array(
-    'date' => array(
-      'type' => 'date',
-      'label' => t('Report date'),
-    ),
-    'findings' => array(
-      'type' => 'list<virustotal_finding>',
-      'label' => t('List of AV findings'),
-    ),
-  );
-}
-
-/**
- * Defines property info for VirusTotal AV findings.
- * A data type used for scan reports to represent each AV result.
- */
-function _virustotal_rules_rules_finding_info() {
-  return array(
-    'av' => array(
-      'type' => 'text',
-      'label' => ('Title of AV product'),
-    ),
-    'result' => array(
-      'type' => 'text',
-      'label' => ('Scan result'),
-    ),
-  );
-}
-
-/**
- * Select list of response status codes.
- */
-function virustotal_rules_response_status_codes() {
-  // Inlcude VirusTotal API class, otherwise constants won't be defined.
-  include_once drupal_get_path('module', 'virustotal') . '/virustotal.class.php';
-  return array(
-    VIRUSTOTAL_RESULT_OK => t('OK'),
-    VIRUSTOTAL_RESULT_NOT_FOUND => t('Not found'),
-    VIRUSTOTAL_RESULT_INVALID_KEY => t('Invalid key'),
-    VIRUSTOTAL_RESULT_EXCEED_QUOTA => t('Exceed quota'),
-    VIRUSTOTAL_RESULT_HTTP_ERROR => t('HTTP Error'),
-  );
-}
-
-/**
- * Implements hook_rules_action_info().
- *
- * Declares meta-data about actions for VirusTotal Rules.
- */
-function virustotal_rules_rules_action_info() {
-  $actions = array();
-
-  // Action to send a file to VirusTotal service.
-  $actions['virustotal_rules_action_send_file'] = array(
-    'label' => t('Send a File'),
-    'group' => t('VirusTotal'),
-    'parameter' => array(
-      'file' => array(
-        'type' => 'file',
-        'label' => t('File Object'),
-        'description' => t('File Object of the local file you want to send'),
-      ),
-    ),
-    'provides' => array(
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('File scan response'),
-      ),
-    ),
-  );
-
-  // Action to send an URL to VirusTotal service.
-  $actions['virustotal_rules_action_send_url'] = array(
-    'label' => t('Send an URL'),
-    'group' => t('VirusTotal'),
-    'parameter' => array(
-      'url' => array(
-        'type' => 'text',
-        'label' => t('URL'),
-        'description' => t('The URL that should be scanned'),
-      ),
-    ),
-    'provides' => array(
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('URL scan response'),
-      ),
-    ),
-  );
-
-  // Action to retrieve a file report from VirusTotal service.
-  $actions['virustotal_rules_action_get_file_report'] = array(
-    'label' => t('Retrieve a file report'),
-    'group' => t('VirusTotal'),
-    'parameter' => array(
-      'resource' => array(
-        'type' => 'text',
-        'label' => t('Resource'),
-        'description' => t('A md5/sha1/sha256 hash will retrieve the most recent report on a given sample. You may also specify a permalink identifier (sha256-timestamp (Scan ID) as returned by the file upload API) to access a specific report.'),
-      ),
-    ),
-    'provides' => array(
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('File report response'),
-      ),
-    ),
-  );
-  
-  // Action to retrieve an URL report from VirusTotal service.
-  $actions['virustotal_rules_action_get_url_report'] = array(
-    'label' => t('Retrieve an URL report'),
-    'group' => t('VirusTotal'),
-    'parameter' => array(
-      'resource' => array(
-        'type' => 'text',
-        'label' => t('Resource'),
-        'description' => t('A URL will retrieve the most recent report on the given URL. You may also specify a permalink identifier (md5-timestamp as returned by the URL submission API) to access a specific report.'),
-      ),
-    ),
-    'provides' => array(
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('URL report response'),
-      ),
-    ),
-  );
-
-  // Action to create a comment on a file or URL report.
-  $actions['virustotal_rules_action_create_comment'] = array(
-    'label' => t('Comment a report'),
-    'group' => t('VirusTotal'),
-    'parameter' => array(
-      'resource' => array(
-        'type' => 'text',
-        'label' => t('Resource'),
-        'description' => t('Either a md5/sha1/sha256 hash of the file you want to review or the URL itself that you want to comment on.'),
-      ),
-      'comment' => array(
-        'type' => 'text',
-        'label' => t('Comment'),
-        'description' => t('The actual review, you can tag it using the "#" twitter-like syntax (e.g. #disinfection #zbot) and reference users using the "@" syntax (e.g. @EmilianoMartinez).'),
-      ),
-      'type' => array(
-        'type' => 'text',
-        'label' => t('Resource type'),
-        'description' => t("String containing 'file' or 'url' depending on what you want to comment."),
-        'options list' => 'virustotal_rules_comment_tag_list',
-      ),
-      'tags' => array(
-        'type' => 'list<text>',
-        'label' => t('Tags'),
-        'description' => t('This parameter is optional. It should be a list containing text of standard file or URL tags. The standard file tags are: goodware, malware, spamattachmentorlink, p2pdownload, impropagating, networkworm, drivebydownload. The standard URL tags are: malicious, benign, malwaredownload, phishingsite, browserexploit, spamlink.'),
-        'optional' => TRUE,
-      ),
-    ),
-    'provides' => array(
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('URL report response'),
-      ),
-    ),
-  );
-  
-  return $actions;
-}
-
-/**
- * The action function for the 'virustotal_rules_action_send_file'.
- * An action to send a file to VirusTotal service.
- */
-function virustotal_rules_action_send_file($file) {
-  // Submit the file for scanning.
-  $vt = new VirusTotal();
-  $response = $vt->scanFile($file);
-  
-  // Provide response data as expected to rules.
-  return array('response' => array(
-    'result' => $response['result'],
-    'scan_id' => $response['scan_id'],
-  ));
-}
-
-/**
- * The action function for the 'virustotal_rules_action_send_url'.
- * An action to send an URL to VirusTotal service.
- */
-function virustotal_rules_action_send_url($url) {
-  // Submit the URL for scanning.
-  $vt = new VirusTotal();
-  $response = $vt->scanUrl($url);
-
-  // Provide response data as expected to rules.
-  return array('response' => array(
-    'result' => $response['result'],
-    'scan_id' => $response['scan_id'],
-  ));
-}
-
-/**
- * The action function for the 'virustotal_rules_action_get_file_report'.
- * An action to retrieve a file report from VirusTotal service.
- */
-function virustotal_rules_action_get_file_report($resource) {
-  // Request a file report.
-  $vt = new VirusTotal();
-  $response = $vt->getFileReport($resource);
-  
-  // Assemble list of findings (data type).
-  $findings = array();
-  foreach ($response['report'][1] as $av => $result) {
-    $findings[] = array(
-      'av' => $av,
-      'result' => $result,
-    );
-  }
-  
-  // Provide response data to rules.
-  return array('response' => array(
-    'result' => $response['result'],
-    'permalink' => $response['permalink'],
-    'report' => array(
-      'date' => strtotime($response['report'][0]),
-      'findings' => $findings,
-    )
-  ));
-}
-
-/**
- * The action function for the 'virustotal_rules_action_get_url_report'.
- * An action to retrieve an URL report from VirusTotal service.
- */
-function virustotal_rules_action_get_url_report($resource) {
-  // Request an URL report.
-  $vt = new VirusTotal();
-  $response = $vt->getUrlReport($resource);
-
-  // Assemble list of findings (data type).
-  $findings = array();
-  foreach ($response['report'][1] as $av => $result) {
-    $findings[] = array(
-      'av' => $av,
-      'result' => $result,
-    );
-  }
-
-  // Provide response data to rules.
-  return array('response' => array(
-    'result' => $response['result'],
-    'report' => array(
-      'date' => strtotime($response['report'][0]),
-      'findings' => $findings,
-    )
-  ));
-}
-
-/**
- * The action function for the 'virustotal_rules_action_create_comment'.
- */
-function virustotal_rules_action_create_comment($resource, $comment, $type, $tags = array()) {
-  // Create a comment on a file / URL report.
-  $vt = new VirusTotal();
-  $response = $vt->makeComment($type, $resource, $comment, $tags);
-
-  // Provide response data to rules.
-  return array('response' => array(
-    'result' => $response['result'],
-  ));
-}
-
-/**
- * Static select list of report types.
- */
-function virustotal_rules_comment_tag_list() {
-  return array(
-    'file' => t('File'),
-    'url' => t('URL'),
-  );
-}
-
-/**
- * Implements hook_rules_event_info().
- *
- * Declares meta-data about events for VirusTotal Rules.
- */
-function virustotal_rules_rules_event_info() {
-  $events = array();
-
-  // Event that triggers before an API request is send.
-  $events['virustotal_rules_event_pre_request'] = array(
-    'label' => t('Before sending a request'),
-    'group' => t('VirusTotal'),
-    'variables' => array(
-      'function' => array(
-        'type' => 'text',
-        'label' => t('API function'),
-        //'options list' => 'virustotal_rules_api_functions',
-      ),
-    ),
-  );
-
-  // Event that triggers after an API request was send.
-  $events['virustotal_rules_event_post_request'] = array(
-    'label' => t('After sending a request'),
-    'group' => t('VirusTotal'),
-    'variables' => array(
-     /* @TODO
-      * This needs a handler implementation so values can be get and set.
-      'response' => array(
-        'type' => 'virustotal_response',
-        'label' => t('API response'),
-      ),
-      */
-      'function' => array(
-        'type' => 'text',
-        'label' => t('API function'),
-        //'options list' => 'virustotal_rules_api_functions',
-      ),
-    ),
-  );
-
-  return $events;
-}
-
-/**
- * Static select list of API functions.
- */
-/* @TODO
- * Options list of API functions don't work on pre and post request events.
- * Need more information on how to define them in events or find the bug.
-function virustotal_rules_api_functions() {
-  // Inlcude VirusTotal API class, otherwise constants won't be defined.
-  include_once drupal_get_path('module', 'virustotal') . '/virustotal.class.php';
-  return array(
-    VIRUSTOTAL_FUNC_SCAN_FILE => t('Scan file'),
-    VIRUSTOTAL_FUNC_GET_FILE_REPORT => t('Get file report'),
-    VIRUSTOTAL_FUNC_SCAN_URL => t('Scan URL'),
-    VIRUSTOTAL_FUNC_GET_URL_REPORT => t('Get url report'),
-    VIRUSTOTAL_FUNC_MAKE_COMMENT => t('Make comment'),
-  );
-}
- */
-
-/**
- * @}
- */
