diff --git a/project_dependency.drupal.inc b/project_dependency.drupal.inc
index 98be958..f8b5b71 100644
--- a/project_dependency.drupal.inc
+++ b/project_dependency.drupal.inc
@@ -57,7 +57,7 @@ function project_dependency_info_parse(array $info_files) {
 
   $info = array();
   foreach ($info_files as $file) {
-    $component = basename($file, '.info');
+    $component = drupal_basename($file, '.info');
     $info[$component] = drupal_parse_info_file($file) + $defaults;
 
     // Change info keys to suite project_dependency_info.
@@ -99,14 +99,13 @@ function project_dependency_info_releases_for_component_get($component, $api_tid
     FROM {project_dependency_component} c
     INNER JOIN {project_release_nodes} prn ON c.release_nid = prn.nid
     LEFT JOIN {project_projects} pp ON prn.pid = pp.nid
-    INNER JOIN {term_node} t ON c.release_nid = t.nid
-    WHERE t.tid = %d AND c.name = '%s'
-    ORDER BY prn.nid DESC, t.vid DESC
-  ", $api_tid, $component);
-
+    INNER JOIN {taxonomy_index} t ON c.release_nid = t.nid
+    WHERE t.tid = :ttid AND c.name = :cname
+    ORDER BY prn.nid DESC
+   ", array(':ttid' => $api_tid, ':cname' => $component))->fetchAllAssoc('component_id');
   $releases = array();
-  while ($release = db_fetch_array($result)) {
-    $releases[$release['release_nid']] = $release;
+  foreach ($result as $release) {
+    $releases[$release->release_nid] = $release;
   }
   return $releases;
 }
@@ -121,26 +120,8 @@ function project_dependency_info_releases_for_component_get($component, $api_tid
  *   Core API term to which the node belongs, otherwise FALSE.
  */
 function project_dependency_info_core_api($node) {
-  static $api_terms = array();
-
-  if (empty($node->nid)) {
-    return NULL;
-  }
-  if (empty($api_terms[$node->nid])) {
-    $api_terms[$node->nid] = FALSE;
-
-    if (!empty($node->taxonomy)) {
-      // Relase API version vocabulary.
-      $api_vid = _project_release_get_api_vid();
-
-      foreach ($node->taxonomy as $tid => $term) {
-        if ($term->vid == $api_vid) {
-          $api_terms[$node->nid] = $term;
-        }
-      }
-    }
-  }
-  return $api_terms[$node->nid];
+  $tid = project_release_get_release_api_tid($node);
+  return taxonomy_term_load($tid);
 }
 
 /**
@@ -233,15 +214,15 @@ function project_dependency_info_batch_process_release(array $release) {
   // "WD php: Warning: ereg(): REG_ERANGE in file_scan_directory()"
   // $function_pattern = DRUPAL_PHP_FUNCTION_PATTERN;
   $function_pattern = '[a-zA-Z][a-zA-Z0-9_]*';
-  $profile_info_files = file_scan_directory(PROJECT_DEPENDENCY_SOURCECODE_DIRECTORY . '/' . $directory, '^' . $function_pattern . '\.(theme|profile)$');
+  $profile_info_files = file_scan_directory(PROJECT_DEPENDENCY_SOURCECODE_DIRECTORY . '/' . $directory, '/^' . $function_pattern . '\.(theme|profile)$/');
   // If any profile or theme files are found, skip this release entirely.
   if (!empty($profile_info_files)) {
     return FALSE;
   }
-  $files = file_scan_directory(PROJECT_DEPENDENCY_SOURCECODE_DIRECTORY . '/' . $directory, '^' . $function_pattern . '\.info$');
+  $files = file_scan_directory(PROJECT_DEPENDENCY_SOURCECODE_DIRECTORY . '/' . $directory, '/^' . $function_pattern . '\.info$/');
   $info_files = array();
   foreach ($files as $file) {
-    $info_files[] = $file->filename;
+    $info_files[] = $file->uri;
   }
   $info = project_dependency_info_parse($info_files);
 
@@ -284,9 +265,8 @@ function project_dependency_info_batch_process_release(array $release) {
  */
 function project_dependency_process_release($shortname, $version) {
   // Load the project.
-  $pid = project_get_nid_from_uri($shortname);
-  $query = 'SELECT nid,tag FROM {project_release_nodes} WHERE pid = %d AND version = "%s"';
-  $release = db_fetch_array(db_query($query, $pid, $version));
+  $pid = project_get_nid_from_machinename($shortname);
+  $release = db_query('SELECT nid,tag FROM {project_release_nodes} WHERE pid = :pid AND version = :version', array(':pid' => $pid, ':version' => $version))->fetchAssoc();
   $release['uri'] = $shortname;
 
   $node = node_load($release['nid']);
@@ -357,10 +337,9 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
   // If no list of depending components was passed in, create a list of all
   // components in this release.
   if (empty($depending_components)) {
-    $query = 'SELECT name FROM {project_dependency_component} WHERE release_nid = %d';
-    $result = db_query($query, $release_nid);
-    while ($row = db_fetch_array($result)) {
-      $depending_components[] = $row['name'];
+    $result = db_query('SELECT name FROM {project_dependency_component} WHERE release_nid = :release_nid', array(':release_nid' => $release_nid))->fetchAssoc();
+    foreach ($result as $row) {
+      $depending_components[] = $row;
     }
   }
   // Now we have a list of component names for which we need to find
@@ -377,7 +356,7 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
     // Walk through the external dependencies to find releases they are shipped
     // in.
     foreach ($external_dependencies as $component_info) {
-      $dependency_component = $component_info['dependency'];
+      $dependency_component = $component_info->dependency;
       $parsed_component =
         project_dependency_parse_dependency($dependency_component, $api_term->name);
       $dependency_component = $parsed_component['name'];
@@ -400,12 +379,12 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
         // The complex regex is for the case that we have a 7.x-7.x branch
         // specified specified as just (7.x). We don't want it removed in that
         // case.
-        $version_to_check = preg_replace("/^{$api_term->name}-([0-9]+\.[0-9x]+.*$)/", '$1', $dependent_release['version']);
+        $version_to_check = preg_replace("/^{$api_term->name}-([0-9]+\.[0-9x]+.*$)/", '$1', $dependent_release->version);
         // Remove -dev from the end of a dependency like (1.x-dev)
         $version_to_check = preg_replace('/\.x-dev$/', '.x', $version_to_check);
         $check = project_dependency_check_incompatibility($parsed_component, $version_to_check);
         if (is_null($check)) {
-          $possible_dependent_releases[$dependent_release['release_nid']] =
+          $possible_dependent_releases[$dependent_release->release_nid] =
             $dependent_release;
         }
       }
@@ -413,7 +392,7 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
       // We choose to use the project of the most recently created release
       // node. This is not guaranteed, but is a heuristic. Is there another?
       $first_dependent_release = reset($possible_dependent_releases);
-      $dependent_pid = $first_dependent_release['pid'];
+      $dependent_pid = $first_dependent_release->pid;
       $recommended_release = project_release_get_current_recommended($dependent_pid, $api_term->tid);
 
       // If we found a recommended release for this project and that release
@@ -427,11 +406,11 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
         // punt and accept the first release that was found.
         $release = $first_dependent_release;
       }
-      $release['component'] = $dependency_component;
-      $dependency_releases[$dependency_component] = $release;
+      $release->component = $dependency_component;
+      $dependency_releases[$dependency_component] = (array) $release;
       // Recurse to find dependencies of the discovered dependency, but only
       // for the component which discovered the dependent release.
-      project_dependency_get_external_component_dependencies($release['release_nid'], array($dependency_component), $dependency_releases, $recursion_level + 1);
+      project_dependency_get_external_component_dependencies($release->release_nid, array($dependency_component), $dependency_releases, $recursion_level + 1);
     }
   }
 }
@@ -450,11 +429,7 @@ function project_dependency_get_external_component_dependencies($release_nid, $d
  */
 function project_dependency_find_external_dependencies($release_nid, $component_name) {
   $rows = array();
-  $query = 'SELECT DISTINCT(pdc.component_id), name AS depender, dependency, release_nid FROM {project_dependency_dependency} pdd INNER JOIN {project_dependency_component} pdc
-            ON pdd.component_id = pdc.component_id WHERE  pdc.name = "%s" AND pdc.release_nid = %d';
-  $result = db_query($query, $component_name, $release_nid);
-  while($row = db_fetch_array($result)) {
-    $rows[] = $row;
-  }
-  return $rows;
+  $result = db_query('SELECT DISTINCT(pdc.component_id), name AS depender, dependency, release_nid FROM {project_dependency_dependency} pdd INNER JOIN {project_dependency_component} pdc
+            ON pdd.component_id = pdc.component_id WHERE  pdc.name = :pdcname AND pdc.release_nid = :pdcrelease_nid', array(':pdcname' => $component_name, ':pdcrelease_nid' => $release_nid))->fetchAllAssoc('release_nid');
+  return $result;
 }
diff --git a/project_dependency.drush.inc b/project_dependency.drush.inc
index 29891f2..9f8753f 100644
--- a/project_dependency.drush.inc
+++ b/project_dependency.drush.inc
@@ -62,18 +62,16 @@ function drush_project_dependency_process_project() {
     drush_print("Processing dependencies for $shortname");
 
     // Get all versions for a project and build dependencies for them.
-    $pid = project_get_nid_from_uri($shortname);
-
+    $pid = project_get_nid_from_machinename($shortname);
     // Find all releases for a project.
-    $query = 'SELECT nid,tag,version FROM {project_release_nodes} WHERE pid = %d ORDER BY nid DESC';
-    $result = db_query($query, $pid);
-    while ($release_info = db_fetch_array($result)) {
-      $dependencies = project_dependency_process_release($shortname, $release_info['version']);
+    $result = db_query('SELECT nid,tag,version FROM {project_release_nodes} WHERE pid = :pid ORDER BY nid DESC', array(':pid' => $pid))->fetchAllAssoc('nid');
+    foreach ($result as $release_info) {
+      $dependencies = project_dependency_process_release($shortname, $release_info->version);
       if ($dependencies === FALSE) {
-        drush_print("Skipped (or git failed) $shortname: {$release_info['version']}");
+        drush_print("Skipped (or git failed) $shortname: {$release_info->version}");
         continue;
       }
-      drush_print_r("Processed $shortname: {$release_info['version']}");
+      drush_print_r("Processed $shortname: {$release_info->version}");
     }
   }
 }
@@ -108,19 +106,19 @@ function drush_project_dependency_process_all_projects() {
   ini_set('memory_limit', -1);
   module_load_include('inc', 'project_dependency', 'project_dependency.drupal');
 
-  $total = $to_do = db_result(db_query('SELECT COUNT(*) FROM {project_release_nodes}'));
+  $total = $to_do = db_query('SELECT COUNT(*) FROM {project_release_nodes}')->fetchField();
   $done = 0;
 
   $query = 'SELECT prn.nid, prn.version, p.uri AS shortname FROM {project_release_nodes} prn INNER JOIN {project_projects} p ON p.nid = prn.pid ORDER BY shortname, version';
-  $result = db_query($query);
+  $result = db_query($query)->fetchAllAssoc('nid');
   $count = $skipped = 0;
-  while ($release_info = db_fetch_array($result)) {
-    $dependencies = project_dependency_process_release($release_info['shortname'], $release_info['version']);
+  foreach ($result as $release_info) {
+    $dependencies = project_dependency_process_release($release_infoi->shortname, $release_info->version);
     if ($dependencies === FALSE) {
       $skipped++;
     }
-    $pct = round($done * 100/$total, 2);
-    drush_print("$pct% done. Done: $done; Skipped: $skipped; Remaining: $to_do  ({$release_info['shortname']}:{$release_info['version']} nid={$release_info['nid']})");
+    $pct = round($done * 100 / $total, 2);
+    drush_print("$pct% done. Done: $done; Skipped: $skipped; Remaining: $to_do  ({$release_info->shortname}:{$release_info->version} nid={$release_info->nid})");
     $done++;
     $to_do--;
   }
@@ -138,8 +136,8 @@ function drush_project_show_dependencies($shortname, $version) {
   module_load_include('inc', 'project_dependency', 'project_dependency.drupal');
 
   // Find the release nid for the given shortname + version
-  $pid = project_get_nid_from_uri($shortname);
-  $nid = db_result(db_query('SELECT nid FROM {project_release_nodes} WHERE pid = %d AND version = "%s"', $pid, $version));
+  $pid = project_get_nid_from_machinename($shortname);
+  $nid = db_query('SELECT nid FROM {project_release_nodes} WHERE pid = :pid AND version = :version', array(':pid' => $pid, ':version' => $version))->fetchField();
   if (empty($nid)) {
     drush_print_r("Failed to load a release for $shortname:$version");
     return;
diff --git a/project_dependency.info b/project_dependency.info
index 374ab86..6dffb53 100644
--- a/project_dependency.info
+++ b/project_dependency.info
@@ -4,6 +4,8 @@ package = Project
 dependencies[] = project
 dependencies[] = project_release
 dependencies[] = taxonomy
-core = 6.x
+core = 7.x
+
+files[] = tests/project_dependency.test
 
 test_dependencies[] = pift
diff --git a/project_dependency.install b/project_dependency.install
index 1f6469a..20a3f1b 100644
--- a/project_dependency.install
+++ b/project_dependency.install
@@ -1,17 +1,14 @@
 <?php
-
-function project_dependency_install() {
-  // Create the database tables.
-  drupal_install_schema('project_dependency');
-}
+/**
+ * @file
+ * Install, update and uninstall functions for the project_dependency module.
+ *
+ */
 
 /**
- * Implementation of hook_uninstall().
+ * Implements hook_uninstall().
  */
 function project_dependency_uninstall() {
-  // Drop database tables.
-  drupal_uninstall_schema('project_dependency');
-
   $variables = array(
     'project_dependency_sourcecode_directory',
     'project_dependency_upstream_repository_path',
@@ -22,11 +19,9 @@ function project_dependency_uninstall() {
 }
 
 /**
- * Implementation of hook_schema().
+ * Implements hook_schema().
  */
 function project_dependency_schema() {
-  // REFACTOR: The project_dependency_components goes here.
-
   $schema['project_dependency_component'] = array(
     'description' => 'The component(s) contained by a project release.',
     'fields' => array(
@@ -58,7 +53,7 @@ function project_dependency_schema() {
       'description' => array(
         'description' => 'A description of a component.',
         'type' => 'text',
-        'size' => 'medium'
+        'size' => 'medium',
       ),
     ),
     'primary key' => array('component_id'),
@@ -90,7 +85,7 @@ function project_dependency_schema() {
       'core_api' => array(
         'type' => 'varchar',
         'length' => 8,
-        'description' => t('The core api version of this component, as in "6.x" or "7.x".'),
+        'description' => 'The core api version of this component, as in "6.x" or "7.x".',
         'not null' => TRUE,
       ),
       'external' => array(
@@ -115,6 +110,5 @@ function project_dependency_schema() {
     'primary key' => array('dependency_id'),
     'indexes' => array('component_dependency' => array('component_id', 'dependency')),
   );
-
   return $schema;
 }
diff --git a/project_dependency.module b/project_dependency.module
index 4fb0408..9655206 100644
--- a/project_dependency.module
+++ b/project_dependency.module
@@ -34,7 +34,7 @@ function project_dependency_project_release_create_package($project_node, $relea
  *   Array of component information.
  */
 function project_dependency_component_load($component_id) {
-  return db_fetch_array(db_query('SELECT * FROM {project_dependency_component} WHERE component_id = %d', $component_id));
+  return db_query('SELECT * FROM {project_dependency_component} WHERE component_id = :component_id', array(':component_id' => $component_id));
 }
 
 /**
@@ -48,9 +48,9 @@ function project_dependency_component_load($component_id) {
  *   array keys: 'name', 'title', 'description'.
  */
 function project_dependency_get_components($release_nid) {
-  $result = db_query('SELECT * FROM {project_dependency_component} WHERE release_nid = %d', $release_nid);
+  $result = db_query('SELECT * FROM {project_dependency_component} WHERE release_nid = :release_nid', array(':release_nid' => $release_nid));
   $components = array();
-  while ($component = db_fetch_array($result)) {
+  foreach ($result as $component) {
     $components[$component['name']] = $component;
   }
   return $components;
@@ -73,10 +73,10 @@ function project_dependency_component_dependencies_load_all($component_id, $depe
     FROM {project_dependency_dependency} d
     JOIN {project_dependency_component} c
       ON c.component_id = d.component_id
-    WHERE c.component_id = %d
-    AND dependency_type <= %d', $component_id, $dependency_type);
+    WHERE c.component_id = :c.component_id
+    AND dependency_type <= :dependency_type', array(':c.component_id' => $component_id, ':dependency_type' => $dependency_type));
   $dependencies = array();
-  while ($dependency = db_fetch_array($result)) {
+  foreach ($result as $dependency) {
     $dependencies[$dependency['name']] = $dependency;
   }
   return $dependencies;
@@ -162,7 +162,8 @@ function project_dependency_get_external_release_dependencies($depending_release
   // Include the project for the release node as an excluded dependency.
   $sql = 'SELECT pp.uri AS uri FROM {project_release_nodes} prn
     INNER JOIN {project_projects} pp ON prn.pid=pp.nid WHERE prn.nid=%d';
-  $uri = db_result(db_query($sql, $depending_release_nid));
+  $uri = db_query('SELECT pp.uri AS uri FROM {project_release_nodes} prn
+    INNER JOIN {project_projects} pp ON prn.pid=pp.nid WHERE prn.nid = :prnnid', array(':prnnid' => $depending_release_nid))->fetchField();
   $excluded_dependencies[] = $uri;
 
   $component_dependencies = array();
@@ -204,9 +205,7 @@ function project_dependency_get_external_release_dependencies($depending_release
  *
  * @see project_dependency_check_incompatibility()
  */
-function project_dependency_parse_dependency($dependency,
-  $core_version=DRUPAL_CORE_COMPATIBILITY) {
-
+function project_dependency_parse_dependency($dependency, $core_version = DRUPAL_CORE_COMPATIBILITY) {
   // We use named subpatterns and support every op that version_compare
   // supports. Also, op is optional and defaults to equals.
   $p_op = '(?P<operation>!=|==|=|<|<=|>|>=|<>)?';
@@ -235,13 +234,17 @@ function project_dependency_parse_dependency($dependency,
           }
           // Equivalence can be checked by adding two restrictions.
           if ($op == '=' || $op == '==') {
-            $value['versions'][] = array('op' => '<',
-              'version' => ($matches['major'] + 1) . '.x');
+            $value['versions'][] = array(
+              'op' => '<',
+              'version' => ($matches['major'] + 1) . '.x',
+            );
             $op = '>=';
           }
         }
-        $value['versions'][] = array('op' => $op,
-          'version' => $matches['major'] . '.' . $matches['minor']);
+        $value['versions'][] = array(
+          'op' => $op,
+          'version' => $matches['major'] . '.' . $matches['minor'],
+        );
       }
     }
   }
diff --git a/project_dependency.package.inc b/project_dependency.package.inc
index 3f4d2e5..a7e8c0c 100644
--- a/project_dependency.package.inc
+++ b/project_dependency.package.inc
@@ -14,10 +14,17 @@
  *   The project release ID.
  */
 function project_dependency_info_package_clear($release_nid) {
-  db_query('DELETE FROM {project_dependency_dependency}
-    WHERE component_id IN (SELECT component_id FROM {project_dependency_component} WHERE release_nid = %d)', $release_nid);
-
-  db_query('DELETE FROM {project_dependency_component} WHERE release_nid = %d', $release_nid);
+  $component_ids = db_query(
+    "SELECT component_id FROM {project_dependency_component}
+      WHERE release_nid = :release_nid",
+    array(':release_nid' => $release_nid)
+  );
+  db_delete('project_dependency_dependency')
+    ->condition('component_id', $component_ids, 'IN')
+    ->execute();
+  db_delete('project_dependency_component')
+    ->condition('release_nid', $release_nid)
+    ->execute();
 }
 
 /**
@@ -68,7 +75,7 @@ function project_dependency_info_package_dependencies_store($release_nid, $compo
   $release = node_load($release_nid);
   $api_term = project_dependency_info_core_api($release);
 
-  foreach($dependencies as $dependency => $attributes) {
+  foreach ($dependencies as $dependency => $attributes) {
     $record = array(
       'component_id' => $component_id,
       'dependency' => $dependency,
diff --git a/tests/project_dependency.test b/tests/project_dependency.test
index 413cd41..b4eebf9 100644
--- a/tests/project_dependency.test
+++ b/tests/project_dependency.test
@@ -159,7 +159,7 @@ class ProjectReleaseComponentDrupalTestCase extends ProjectDrupalOrgWebTestCase
     // Ensure that parsing creates an error due to the lack of a stable release.
     $this->assertPackageError('ERROR: No development release with a corresponding stable release was found that matches the requirements for dependency [project_dependency_foo] of [project_dependency_bar].');
 
-  // @TODO Figure out what CVS/Version control API stuff needs to be in setup.
+    // @TODO Figure out what CVS/Version control API stuff needs to be in setup.
 //     $this->createTag('bar', 'DRUPAL-7--1-0');
 //     $this->drupalPost('node/add/project-release/' . $this->projects['bar']->nid, array(), t('Next'));
 //     $edit = array(
@@ -177,8 +177,8 @@ class ProjectReleaseComponentDrupalTestCase extends ProjectDrupalOrgWebTestCase
    */
   protected function process() {
     // Remove all previously existing project_dependency_info data.
-    db_query('DELETE FROM {project_dependency_dependency}');
-    db_query('DELETE FROM {project_dependency_component}');
+    db_delete('project_dependency_dependency');
+    db_delete('project_dependency_component');
 
     // Reset packaging errors.
     wd_err(FALSE, TRUE);
@@ -200,7 +200,14 @@ class ProjectReleaseComponentDrupalTestCase extends ProjectDrupalOrgWebTestCase
   }
 
   protected function createTag($project, $tag, $branch = FALSE) {
-    db_query("INSERT INTO {cvs_tags} VALUES (%d, '%s', %d, %d)", $this->projects[$project]->nid, $tag, $branch ? 1 : 0, time());
+    db_query("INSERT INTO {cvs_tags} VALUES (:nid, ':tag', :branch, :time)",
+      array(
+        ':nid' => $this->projects[$project]->nid,
+        ':tag' => $tag,
+        ':branch' => $branch ? 1 : 0,
+        ':time' => time()
+      )
+    );
   }
 
   /**
