diff --git a/stormteam/stormteam.info b/stormteam/stormteam.info
index 69bb0ea..8e6b510 100644
--- a/stormteam/stormteam.info
+++ b/stormteam/stormteam.info
@@ -3,6 +3,7 @@ description = "Allows recording of teams made up of Storm Organizations and Stor
 core = 7.x
 package = Storm
 
+dependencies[] = views
 dependencies[] = storm
 dependencies[] = stormorganization
 dependencies[] = stormperson
diff --git a/stormteam/stormteam.module b/stormteam/stormteam.module
index 3bf40f2..6836a06 100644
--- a/stormteam/stormteam.module
+++ b/stormteam/stormteam.module
@@ -8,45 +8,10 @@
  * - Node specific hooks: node_info, content_extra_fields, access, access_sql,
  *     storm_rewrite_where_sql, form, load, view, _beforesave, insert, update,
  *     delete, nodeapi
- * - Page generation: list, list_filter, list_filter_filter, list_filter_reset,
- *     autocomplete, autocomplete_combo
  */
 
 /**
  * @function
- * Implementation of hook_help().
- */
-/* function stormteam_help($path, $arg) {
-}*/
-
-/**
- * @function
- * Implementation of hook_menu().
- */
-function stormteam_menu() {
-  $items = array();
-
-  $items['storm/teams'] = array(
-    'title' => 'Teams',
-    'description' => 'Storm teams',
-    'page callback' => 'stormteam_list',
-    'access arguments' => array('Storm team: access'),
-    'type' => MENU_NORMAL_ITEM,
-    'weight' => 2,
-  );
-
-  $items['storm/teams/autocomplete'] = array(
-    'title' => 'Teams autocomplete',
-    'page callback' => 'stormteam_autocomplete',
-    'access arguments' => array('Storm team: access'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
- * @function
  * Implementation of hook_permission().
  */
 function stormteam_permission() {
@@ -93,10 +58,6 @@ function stormteam_permission() {
  */
 function stormteam_theme() {
   return array(
-    'stormteam_list' => array(
-      'file'      => 'stormteam.theme.inc',
-      'arguments' => array('header', 'teams'),
-    ),
     'stormteam_view' => array(
       'file'      => 'stormteam.theme.inc',
       'variables' => array('node', 'view_mode'),
@@ -523,173 +484,6 @@ function stormteam_node_revision_delete($node) {
 
 /**
  * @function
- * Function to display list of Storm Teams, called from hook_menu
- */
-function stormteam_list() {
-  // Add Storm generic CSS
-  drupal_add_css(drupal_get_path('module', 'storm') .'/storm.css', 'module');
-
-  $breadcrumb = array(
-    l(t('Storm'), 'storm'),
-  );
-  drupal_set_breadcrumb($breadcrumb);
-
-  if (array_key_exists('name', $_GET)) {
-    if ($_SESSION['stormteam_list_filter']['name'] != $_GET['name']) {
-      $_SESSION['stormteam_list_filter']['name'] = $_GET['name'];
-    }
-  }
-
-  $i = new stdClass();
-  $i->type = 'stormteam';
-
-  $header = array(
-    array(
-      'data' => t('Team Name'),
-      'field' => 'n.title',
-      'sort' => 'ASC',
-    ),
-    array(
-      'data' => t('Description'),
-      'field' => 'n.body',
-      'sort' => '',
-    ),
-    array(
-      'data' => storm_icon_add_node($i, $_GET),
-      'class' => 'storm_list_operations',
-    ),
-  );
-
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid', 'title', 'type'))
-    ->condition('n.status', 1)
-    ->condition('n.type', 'stormteam')
-    ->distinct();
-// nre.teaser FROM INNER JOIN {stormteam} as ste ON n.vid=ste.vid INNER JOIN {node_revisions} as nre ON n.vid = nre.vid";
-
-  $where = array();
-  $args = array();
-  $filterfields = array();
-
-  if (isset($_SESSION['stormteam_list_filter']['name']) && $_SESSION['stormteam_list_filter']['name'] != '') {
-    $where[] = "LOWER(n.title) LIKE LOWER('%%%s%%')";
-    $args[] = $_SESSION['stormteam_list_filter']['name'];
-    $filterfields[] = t('Team name');
-  }
-
-  // Sets value for fieldset label, does not affect filter itself.
-  $itemsperpage = isset($_SESSION['stormteam_list_filter']['itemsperpage']) ? $_SESSION['stormteam_list_filter']['itemsperpage'] : variable_get('storm_default_items_per_page', 10);
-
-  if (count($filterfields) == 0) {
-    $filterdesc = t('Not filtered');
-  }
-  else {
-    $filterdesc = t('Filtered by !fields', array('!fields' => implode(", ", array_unique($filterfields))));
-  }
-  $filterdesc .= ' | '. t('!items items per page', array('!items' => $itemsperpage));
-
-  $stormteam_list_filter = drupal_get_form('stormteam_list_filter', $filterdesc);
-
-  $o = drupal_render($stormteam_list_filter);
-
-//  $s = stormteam_access_sql($s, $where);
-//  $s = db_rewrite_sql($s);
-//  $tablesort = tablesort_sql($header);
-  // default count replacement doesn't work, because we need the distinct
-//  $count_query = preg_replace('/SELECT.*?FROM /As', 'SELECT COUNT(DISTINCT(n.nid)) FROM ', $s);
-//  $r = pager_query($s . $tablesort, $itemsperpage, 0, $count_query, $args);
-  $result = $query->execute();
-  $rows = array();
-  foreach ($result as $team) {
-    $rows[] = array(
-      l($team->title, 'node/'. $team->nid),
-      check_markup($team->teaser),
-      array(
-        'data' => storm_icon_edit_node($team, $_GET) .'&nbsp;'. storm_icon_delete_node($team, $_GET),
-        'class' => 'storm_list_operations',
-      ),
-    );
-  }
-
-  $o .= theme('table', array('header' => $header, 'rows' => $rows));
-//  $o .= theme('pager', NULL, $itemsperpage, 0);
-  return $o;
-}
-
-/**
- * @function
- * Function to define form for setting Storm Team list filter.
- */
-function stormteam_list_filter($form, &$form_state, $filterdesc = 'Filter') {
-  $name = isset($_SESSION['stormteam_list_filter']['name']) ? $_SESSION['stormteam_list_filter']['name'] : '';
-
-  $itemsperpage = isset($_SESSION['stormteam_list_filter']['itemsperpage']) ? $_SESSION['stormteam_list_filter']['itemsperpage'] : variable_get('storm_default_items_per_page', 10);
-
-  $form = array();
-
-  $form['filter'] = array(
-    '#type' => 'fieldset',
-    '#title' => $filterdesc,
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-    '#weight' => -20,
-  );
-
-  $form['filter']['name'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Name'),
-    '#default_value' => $name,
-    '#autocomplete_path' => 'storm/teams/autocomplete',
-  );
-
-  $form['filter']['group1'] = array(
-    '#type' => 'markup',
-//    '#theme' => 'storm_form_group',
-  );
-
-  $form['filter']['group1']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Filter'),
-    '#submit' => array('stormteam_list_filter_filter'),
-  );
-
-  $form['filter']['group1']['reset'] = array(
-    '#type' => 'submit',
-    '#value' => t('Reset'),
-    '#submit' => array('stormteam_list_filter_reset'),
-  );
-
-  $form['filter']['group1']['itemsperpage'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Items'),
-    '#size' => 10,
-    '#default_value' => $itemsperpage,
-    '#prefix' => '<div class="container-inline">',
-    '#suffix' => '</div>',
-  );
-
-  return $form;
-}
-
-/**
- * @function
- * Function to define submit handler in form for setting Storm Team list filter.
- */
-function stormteam_list_filter_filter($form, &$form_state) {
-  $_SESSION['stormteam_list_filter']['name'] = $form_state['values']['name'];
-  $_SESSION['stormteam_list_filter']['itemsperpage'] = $form_state['values']['itemsperpage'];
-}
-
-/**
- * @function
- * Function to define reset handler in form for setting Storm Team list filter
- */
-function stormteam_list_filter_reset($form, &$form_state) {
-  unset($_SESSION['stormteam_list_filter']);
-}
-
-/**
- * @function
  * Function to return an autocomplete list for Storm Teams
  */
 function stormteam_autocomplete($string = '') {
diff --git a/stormteam/stormteam.test b/stormteam/stormteam.test
index 086c2cb..0d851fb 100644
--- a/stormteam/stormteam.test
+++ b/stormteam/stormteam.test
@@ -14,7 +14,7 @@ class StormteamTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormperson', 'stormteam');
+    parent::setUp('views', 'storm', 'stormorganization', 'stormperson', 'stormteam');
   }
 
   public function testStormteamCreate() {
diff --git a/stormteam/stormteam.views_default.inc b/stormteam/stormteam.views_default.inc
new file mode 100644
index 0000000..4078ede
--- /dev/null
+++ b/stormteam/stormteam.views_default.inc
@@ -0,0 +1,138 @@
+<?php
+
+function stormteam_views_default_views() {
+  $views = array();
+
+  $view = new view();
+  $view->name = 'storm_team_list';
+  $view->description = '';
+  $view->tag = 'storm';
+  $view->base_table = 'node';
+  $view->human_name = 'stormteam_list';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'Teams';
+  $handler->display->display_options['use_more_always'] = FALSE;
+  $handler->display->display_options['access']['type'] = 'perm';
+  $handler->display->display_options['access']['perm'] = 'Storm team: access';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
+  $handler->display->display_options['style_plugin'] = 'table';
+  $handler->display->display_options['style_options']['columns'] = array(
+    'title' => 'title',
+    'body' => 'body',
+    'edit_node' => 'edit_node',
+    'delete_node' => 'edit_node',
+  );
+  $handler->display->display_options['style_options']['default'] = 'title';
+  $handler->display->display_options['style_options']['info'] = array(
+    'title' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'body' => array(
+      'sortable' => 0,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'edit_node' => array(
+      'align' => '',
+      'separator' => ' ',
+      'empty_column' => 1,
+    ),
+    'delete_node' => array(
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 1,
+    ),
+  );
+  /* Field: Content: Title */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'node';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['label'] = 'Team Name';
+  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
+  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
+  /* Field: Content: Description */
+  $handler->display->display_options['fields']['body']['id'] = 'body';
+  $handler->display->display_options['fields']['body']['table'] = 'field_data_body';
+  $handler->display->display_options['fields']['body']['field'] = 'body';
+  $handler->display->display_options['fields']['body']['type'] = 'text_summary_or_trimmed';
+  $handler->display->display_options['fields']['body']['settings'] = array(
+    'trim_length' => '600',
+  );
+  /* Field: Content: Edit link */
+  $handler->display->display_options['fields']['edit_node']['id'] = 'edit_node';
+  $handler->display->display_options['fields']['edit_node']['table'] = 'views_entity_node';
+  $handler->display->display_options['fields']['edit_node']['field'] = 'edit_node';
+  $handler->display->display_options['fields']['edit_node']['label'] = '';
+  $handler->display->display_options['fields']['edit_node']['element_label_colon'] = FALSE;
+  /* Field: Content: Delete link */
+  $handler->display->display_options['fields']['delete_node']['id'] = 'delete_node';
+  $handler->display->display_options['fields']['delete_node']['table'] = 'views_entity_node';
+  $handler->display->display_options['fields']['delete_node']['field'] = 'delete_node';
+  $handler->display->display_options['fields']['delete_node']['label'] = '';
+  $handler->display->display_options['fields']['delete_node']['element_label_colon'] = FALSE;
+  /* Sort criterion: Content: Title */
+  $handler->display->display_options['sorts']['title']['id'] = 'title';
+  $handler->display->display_options['sorts']['title']['table'] = 'node';
+  $handler->display->display_options['sorts']['title']['field'] = 'title';
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = 1;
+  $handler->display->display_options['filters']['status']['group'] = 1;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+  /* Filter criterion: Content: Type */
+  $handler->display->display_options['filters']['type']['id'] = 'type';
+  $handler->display->display_options['filters']['type']['table'] = 'node';
+  $handler->display->display_options['filters']['type']['field'] = 'type';
+  $handler->display->display_options['filters']['type']['value'] = array(
+    'stormteam' => 'stormteam',
+  );
+  /* Filter criterion: Content: Title */
+  $handler->display->display_options['filters']['title']['id'] = 'title';
+  $handler->display->display_options['filters']['title']['table'] = 'node';
+  $handler->display->display_options['filters']['title']['field'] = 'title';
+  $handler->display->display_options['filters']['title']['operator'] = 'contains';
+  $handler->display->display_options['filters']['title']['exposed'] = TRUE;
+  $handler->display->display_options['filters']['title']['expose']['operator_id'] = 'title_op';
+  $handler->display->display_options['filters']['title']['expose']['label'] = 'Name';
+  $handler->display->display_options['filters']['title']['expose']['operator'] = 'title_op';
+  $handler->display->display_options['filters']['title']['expose']['identifier'] = 'title';
+  $handler->display->display_options['filters']['title']['expose']['remember_roles'] = array(
+    2 => '2',
+    1 => 0,
+    3 => 0,
+  );
+  $handler->display->display_options['filters']['title']['group_info']['label'] = 'Title';
+  $handler->display->display_options['filters']['title']['group_info']['identifier'] = 'title';
+  $handler->display->display_options['filters']['title']['group_info']['remember'] = FALSE;
+  $handler->display->display_options['filters']['title']['group_info']['group_items'] = array(
+    1 => array(),
+    2 => array(),
+    3 => array(),
+  );
+
+  /* Display: Page */
+  $handler = $view->new_display('page', 'Page', 'page');
+  $handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
+  $handler->display->display_options['path'] = 'storm/teams';
+
+  $views[$view->name] = $view;
+
+  return $views;
+}
