diff --git a/features/closes_account.feature b/features/closes_account.feature
index 96ba83664876c1c73a6e3ffc0ea342f7fbe77f34..589f15be658bcc4ecf5603706c5153ae413e4348 100644
--- a/features/closes_account.feature
+++ b/features/closes_account.feature
@@ -8,7 +8,7 @@ Feature: Close Account
     Given I am signed in
     When I click on my name in the header
     And I follow "settings"
-    And I click ok in the confirm dialog to appear next
+    And I preemptively confirm the alert
     And I follow "Close Account"
     Then I should be on the home page
 
@@ -31,7 +31,7 @@ Feature: Close Account
     Then I sign in as "bob@bob.bob"
     When I click on my name in the header
     And I follow "settings"
-    And I click ok in the confirm dialog to appear next
+    And I preemptively confirm the alert
     And I follow "Close Account"
     Then I sign in as "alice@alice.alice"
     And I am on the home page
diff --git a/features/manages_aspects.feature b/features/manages_aspects.feature
index a307d49dd09ddd64e8710693b29bd1c329c69909..2c7c2e17cb7370b1386cc8fc9d40b5b138540c33 100644
--- a/features/manages_aspects.feature
+++ b/features/manages_aspects.feature
@@ -26,7 +26,7 @@ Feature: User manages contacts
     And I follow "People"
     And I follow "Edit People"
     And I wait for the ajax to finish
-    And I click ok in the confirm dialog to appear next
+    And I preemptively confirm the alert
     And I press "Delete" in the modal window
     Then I should be on the contacts page
     And I should not see "People" within "#aspect_nav"
@@ -37,7 +37,7 @@ Feature: User manages contacts
     When I am on the home page
     And I click on "People" aspect edit icon
     And I wait for the ajax to finish
-    And I click ok in the confirm dialog to appear next
+    And I preemptively confirm the alert
     And I press "Delete" in the modal window
     Then I should be on the aspects page
     And I should not see "People" within "#aspect_nav"
@@ -58,8 +58,9 @@ Feature: User manages contacts
     And I wait for the ajax to finish
     Then I should have 0 contacts in "Cat People"
 
-  Scenario: scrolling through contacts index
+  Scenario: infinite scroll on contacts index
     Given I am signed in
+    And I resize my window to 800x600
     And I have 60 contacts
     And I am on the contacts page
     Then I should see 25 contacts
@@ -70,7 +71,6 @@ Feature: User manages contacts
     When I scroll down
     Then I should see 60 contacts
 
-
   Scenario: clicking on the contacts link in the header with zero contacts directs a user to the featured users page
     Given I am signed in
     And I have 0 contacts
diff --git a/features/posts.feature b/features/posts.feature
index 950ba7313df8eb0a0c0e719ee6e1ffacab92a36d..0cf1fda53d53a125164640043176d897d5f364b7 100644
--- a/features/posts.feature
+++ b/features/posts.feature
@@ -21,8 +21,8 @@ Feature: posting
     Scenario: post to all aspects
       Given I expand the publisher
       When I fill in "status_message_fake_text" with "I am eating a yogurt"
-        And I press "Share"
-        And I follow "Your Aspects"
+      And I press "Share"
+      And I follow "Your Aspects"
       Then I should see "I am eating a yogurt" within ".stream_element"
 
     Scenario: post a photo without text 
@@ -90,43 +90,43 @@ Feature: posting
     Scenario: hide a post
       Given I expand the publisher
       When I fill in "status_message_fake_text" with "Here is a post for you to hide"
-        And I press "Share"
-        And I wait for the ajax to finish
-
-        And I log out
-        And I sign in as "alice@alice.alice"
-        And I am on "bob@bob.bob"'s page
-
-        And I hover over the ".stream_element"
-        And I preemptively confirm the alert
-        And I click to delete the first post
-        And I wait for the ajax to finish
-        And I go to "bob@bob.bob"'s page
-        Then I should not see "Here is a post for you to hide"
-        And I am on the aspects page
-        Then I should not see "Here is a post for you to hide"
+      And I press "Share"
+      And I wait for the ajax to finish
+
+      And I log out
+      And I sign in as "alice@alice.alice"
+      And I am on "bob@bob.bob"'s page
+
+      And I hover over the ".stream_element"
+      And I preemptively confirm the alert
+      And I click to delete the first post
+      And I wait for the ajax to finish
+      And I go to "bob@bob.bob"'s page
+      Then I should not see "Here is a post for you to hide"
+      And I am on the aspects page
+      Then I should not see "Here is a post for you to hide"
 
     Scenario: delete a post
       Given I expand the publisher
       When I fill in "status_message_fake_text" with "I am eating a yogurt"
-        And I press "Share"
-        And I wait for the ajax to finish
-        And I follow "Your Aspects"
-        And I hover over the ".stream_element"
-        And I preemptively confirm the alert
-        And I click to delete the first post
-        And I wait for the ajax to finish
-        And I follow "Your Aspects"
-        Then I should not see "I am eating a yogurt"
+      And I press "Share"
+      And I wait for the ajax to finish
+      And I follow "Your Aspects"
+      And I hover over the ".stream_element"
+      And I preemptively confirm the alert
+      And I click to delete the first post
+      And I wait for the ajax to finish
+      And I follow "Your Aspects"
+      Then I should not see "I am eating a yogurt"
 
     Scenario Outline: post to one aspect
       When I follow "PostTo"
-        And I wait for the ajax to finish
-        And I expand the publisher
-        And I fill in "status_message_fake_text" with "I am eating a yogurt"
-        And I press "Share"
-        And I am on the aspects page
-        And I follow "<aspect>" within "#aspect_nav"
+      And I wait for the ajax to finish
+      And I expand the publisher
+      And I fill in "status_message_fake_text" with "I am eating a yogurt"
+      And I press "Share"
+      And I am on the aspects page
+      And I follow "<aspect>" within "#aspect_nav"
       Then I should <see> "I am eating a yogurt"
 
       Examples:
diff --git a/features/step_definitions/custom_web_steps.rb b/features/step_definitions/custom_web_steps.rb
index 895696344eb1738123240ff363d636e4113fb33f..ef776aaaf2b57b068a2aa9548933fc493a943924 100644
--- a/features/step_definitions/custom_web_steps.rb
+++ b/features/step_definitions/custom_web_steps.rb
@@ -61,10 +61,6 @@ When /^I click to delete the first post$/ do
   page.execute_script('$(".stream_element").first().find(".stream_element_delete").first().click()')
 end
 
-When /^I click to delete the ([\d])(nd|rd|st|th) post$/ do |number, stuff|
-  page.execute_script('$(".stream_element:nth-child('+ number +'").first().find(".stream_element_delete").first().click()')
-end
-
 When /^I click to delete the first comment$/ do
   page.execute_script('$(".comment.posted").first().find(".comment_delete").click()')
 end
@@ -91,12 +87,6 @@ When /^(.*) in the modal window$/ do |action|
   end
 end
 
-When /^(.*) in the aspect list$/ do |action|
-  within('#aspect_list') do
-    When action
-  end
-end
-
 When /^I press the first "([^"]*)"(?: within "([^"]*)")?$/ do |link_selector, within_selector|
   with_scope(within_selector) do
     find(:css, link_selector).click
@@ -121,12 +111,6 @@ Then /^(?:|I )should not see a "([^\"]*)"(?: within "([^\"]*)")?$/ do |selector,
   end
 end
 
-Then /^I should see "([^\"]*)" in the main content area$/ do |stuff|
-  within("#main_stream") do
-    Then "I should see #{stuff}"
-  end
-end
-
 When /^I wait for the ajax to finish$/ do
   wait_until(10) { evaluate_script("$.active") == 0 }
 end
@@ -151,12 +135,6 @@ When /^I attach the file "([^\"]*)" to hidden element "([^\"]*)"(?: within "([^\
   JS
 end
 
-When /^I click ok in the confirm dialog to appear next$/ do
-  evaluate_script <<-JS
-    window.confirm = function() { return true; };
-  JS
-end
-
 Then /^I should get download alert$/ do
   page.evaluate_script("window.alert = function() { return true; }")
 end
@@ -170,15 +148,6 @@ When /^I search for "([^\"]*)"$/ do |search_term|
   JS
 end
 
-Then /^I should( not)? see an add contact button$/ do |not_see|
-  expected_length = not_see ? 0 : 1
-  evaluate_script("$('.add_contact a').length == #{expected_length};")
-end
-
-When /^I click on the add contact button$/ do
-  page.execute_script("$('.add_contact a').click();")
-end
-
 Then /^the "([^"]*)" field(?: within "([^"]*)")? should be filled with "([^"]*)"$/ do |field, selector, value|
   with_scope(selector) do
     field = find_field(field)
@@ -206,14 +175,6 @@ And /^I scroll down$/ do
   wait_until(10) { evaluate_script('$("#infscr-loading:visible").length') == 0 }
 end
 
-When /^I wait for (\d+) seconds?$/ do |seconds|
-  sleep seconds.to_i
-end
-
-When /^I click the notification badge$/ do
-  find(:css, "#notification_badge a").click
-end
-
 Then /^the notification dropdown should be visible$/ do
   find(:css, "#notification_dropdown").should be_visible
 end
diff --git a/features/step_definitions/debug_steps.rb b/features/step_definitions/debug_steps.rb
index c56973edf9b02994630377c78e891d7645065a18..8527c60088b75ce92c65b993e443bf4a69765e1e 100644
--- a/features/step_definitions/debug_steps.rb
+++ b/features/step_definitions/debug_steps.rb
@@ -2,3 +2,7 @@ When 'I debug' do
   debugger
   true
 end
+
+When /^I wait for (\d+) seconds?$/ do |seconds|
+  sleep seconds.to_i
+end
diff --git a/features/step_definitions/mention_steps.rb b/features/step_definitions/mention_steps.rb
index 67d8c37e275acfb0f92b0e615eb85482eef37f61..d1f72fbd6014e408b3be27ee6287e7e7e0434350 100644
--- a/features/step_definitions/mention_steps.rb
+++ b/features/step_definitions/mention_steps.rb
@@ -1,11 +1,6 @@
 And /^Alice has a post mentioning Bob$/ do
   alice = User.find_by_email 'alice@alice.alice'
   bob = User.find_by_email 'bob@bob.bob'
-  aspect = alice.aspects.first
-  alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => alice.aspects.first)
-end
-
-When /^I fill in a mention for bob into the publisher$/ do
-  bob = User.find_by_email 'bob@bob.bob'
-  And 'I fill in "status_message_fake_text" with "Hi, @{Bob Jones; #{bob.person.diaspora_handle}} long time no see'
-end
+  aspect = alice.aspects.where(:name => "Besties").first
+  alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => aspect)
+end
\ No newline at end of file
diff --git a/features/step_definitions/session_steps.rb b/features/step_definitions/session_steps.rb
index 787315dae101283a447c0213312417c0586bdc61..df84adf9b39efa7622592cb0ee1123b037fa5b50 100644
--- a/features/step_definitions/session_steps.rb
+++ b/features/step_definitions/session_steps.rb
@@ -1,14 +1,3 @@
-Given /^I am signed in as the following (\w+):$/ do |role, table|
-  Given %(the following #{role}:), table
-  @me = @it
-  Given 'I am signed in'
-end
-
-Given /^I (?:am signed|sign) in as an? (\w+)$/ do |role|
-  @me = Factory(role.to_sym)
-  Given 'I am signed in'
-end
-
 Given /^(?:I am signed in|I sign in)$/ do
   When %(I try to sign in)
   wait_until { page.has_content?("#{@me.first_name} #{@me.last_name}") }
diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb
index b759ce4cbe49ac98dd886499daf2d09ed98b16ed..0c2cb67eeadb090bde9718de04e1a819655d276d 100644
--- a/features/step_definitions/user_steps.rb
+++ b/features/step_definitions/user_steps.rb
@@ -6,10 +6,6 @@ Given /^a user with username "([^\"]*)" and password "([^\"]*)"$/ do |username,
   @me.reload
 end
 
-Given /^that I am a rock star$/ do
-  Given('a user with username "awesome" and password "totallyawesome"')
-end
-
 Given /^a user with email "([^\"]*)"$/ do |email|
   user = Factory(:user, :email => email, :password => 'password',
                  :password_confirmation => 'password', :getting_started => false)
@@ -62,17 +58,6 @@ When /^I have user with username "([^"]*)" in an aspect called "([^"]*)"$/ do |u
   contact.aspects << @me.aspects.find_by_name(aspect)
 end
 
-
-Given /^I have one follower$/ do
-  other_user = Factory(:user)
-  other_aspect = other_user.aspects.create!(:name => "meh")
-  other_user.share_with(@me.person, other_aspect)
-
-  other_user.reload
-  other_aspect.reload
-  @me.reload
-end
-
 Given /^a user with email "([^"]*)" is connected with "([^"]*)"$/ do |arg1, arg2|
   user1 = User.where(:email => arg1).first
   user2 = User.where(:email => arg2).first
@@ -82,7 +67,7 @@ end
 Given /^a user with username "([^"]*)" is connected with "([^"]*)"$/ do |arg1, arg2|
   user1 = User.where(:username => arg1).first
   user2 = User.where(:username => arg2).first
-  connect_users(user1, user1.aspects.first, user2, user2.aspects.first)
+  connect_users(user1, user1.aspects.where(:name => "Besties").first, user2, user2.aspects.where(:name => "Besties").first)
 end
 
 Given /^there is a user "([^\"]*)" who's tagged "([^\"]*)"$/ do |full_name, tag|
@@ -101,7 +86,7 @@ Given /^many posts from alice for bob$/ do
   time_fulcrum = Time.now - 40000
   time_interval = 1000
   (1..40).each do |n|
-    post = alice.post :status_message, :text => "#{alice.username} - #{n} - #seeded", :to => alice.aspects.first.id
+    post = alice.post :status_message, :text => "#{alice.username} - #{n} - #seeded", :to => alice.aspects.where(:name => "generic").first.id
     post.created_at = time_fulcrum - time_interval
     post.updated_at = time_fulcrum + time_interval
     post.save
@@ -122,19 +107,6 @@ When /^I (add|remove|toggle) the person (to|from) my ([\d])(nd|rd|st|th) aspect$
   }
 end
 
-When /^I add the person to a new aspect called "([^\"]*)"$/ do |aspect_name|
-  steps %Q{
-    And I press the first ".toggle.button"
-
-    And I press click ".new_aspect" within ".dropdown.active"
-    And I fill in "#aspect_name" with "#{aspect_name}"
-    And I submit the form
-
-    And I wait for the ajax to finish
-    And I press the first ".toggle.button"
-  }
-end
-
 When /^I post a status with the text "([^\"]*)"$/ do |text|
   @me.post(:status_message, :text => text, :public => true, :to => 'all')
 end
@@ -191,9 +163,9 @@ Given /^I have (\d+) contacts$/ do |n|
   Contact.import(contacts)
   contacts = @me.contacts.limit(n.to_i)
 
-  aspect_id = @me.aspects.first.id
+  aspect_id = @me.aspects.length == 1 ? @me.aspects.first.id : @me.aspects.where(:name => "Besties").first.id
   contacts.each do |contact|
-    aspect_memberships << AspectMembership.new(:contact_id => contact.id, :aspect_id => @me.aspects.first.id)
+    aspect_memberships << AspectMembership.new(:contact_id => contact.id, :aspect_id => aspect_id)
   end
   AspectMembership.import(aspect_memberships)
 end
diff --git a/spec/helper_methods.rb b/spec/helper_methods.rb
index fe36f82eb4992981057b011f953e53de5bf318dd..4c2fa319642ed56e0fc68fa9a9ff6c8f9dd871f4 100644
--- a/spec/helper_methods.rb
+++ b/spec/helper_methods.rb
@@ -1,6 +1,8 @@
 module HelperMethods
-  def connect_users_with_aspects(u1,u2)
-    connect_users(u1, u1.aspects.first, u2, u2.aspects.first)
+  def connect_users_with_aspects(u1, u2)
+    aspect1 = u1.aspects.length == 1 ? u1.aspects.first : u1.aspects.where(:name => "Besties").first
+    aspect2 = u2.aspects.length == 1 ? u2.aspects.first : u2.aspects.where(:name => "Besties").first
+    connect_users(u1, aspect1, u2, aspect2)
   end
   def connect_users(user1, aspect1, user2, aspect2)
     user1.contacts.create!(:person => user2.person,