diff --git a/.travis.yml b/.travis.yml
index d8e0c9ea..aaba3066 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,6 +5,7 @@ rvm:
   - 2.1
   - 2.2
   - 2.3.1
+  - 2.4
   - ruby-head
   - rbx-2
   - jruby
diff --git a/Gemfile b/Gemfile
index 43c0d13f..00fb7953 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,25 +1,7 @@
 source 'https://rubygems.org'
 gemspec
-gem 'rake',  '~> 10.0'
+#gem 'rake',  '~> 10.0'
 
-# For Guard
-group :development do
-  gem 'gist'
-  gem 'yard'
-  gem 'rb-inotify', :require => false
-  gem 'rb-fsevent', :require => false
-end
-
-group :test do
   gem 'rspec', '~> 3.4.0'
-end
-
-group :development, :test do
-  gem 'simplecov', '~> 0.8.0'
-end
 
-platform :rbx do
-  gem 'rubysl-singleton'
-  gem 'rubysl-prettyprint'
-  gem 'rb-readline'
-end
+#  gem 'simplecov', '~> 0.8.0'
diff --git a/a.rb b/a.rb
new file mode 100644
index 00000000..138bf462
--- /dev/null
+++ b/a.rb
@@ -0,0 +1,28 @@
+require 'bundler/setup'
+Bundler.require  :default, :test
+require 'rspec/core'
+require 'coverage'
+Coverage.start
+#at_exit { Coverage.result }
+require 'pry/test/helper'
+require_relative 'spec/spec_helpers/mock_pry'
+require_relative 'spec/spec_helpers/repl_tester'
+load File.dirname(__FILE__) + "/spec/helper.rb"
+load File.dirname(__FILE__) + "/spec/fixtures/show_source_doc_examples.rb"
+require "pry/input_completer"
+
+load File.dirname(__FILE__) + "/spec/color_printer_spec.rb"
+load File.dirname(__FILE__) + "/spec/commands/show_doc_spec.rb"
+
+proc do
+proc do
+proc do
+proc do
+load File.dirname(__FILE__) + "/spec/completion_spec.rb"
+end.call
+end.call
+end.call
+end.call
+
+
+RSpec::Core::Runner.invoke
diff --git a/lib/pry/code.rb b/lib/pry/code.rb
index 9177b39c..fd49f93f 100644
--- a/lib/pry/code.rb
+++ b/lib/pry/code.rb
@@ -338,7 +338,7 @@ class Pry
     undef =~
 
     # Check whether String responds to missing methods.
-    def respond_to_missing?(name, include_all = false)
+    def respond_to_missing?(name, include_all=false)
       ''.respond_to?(name, include_all)
     end
 
diff --git a/lib/pry/config/behavior.rb b/lib/pry/config/behavior.rb
index 719dd5e6..081c3828 100644
--- a/lib/pry/config/behavior.rb
+++ b/lib/pry/config/behavior.rb
@@ -186,8 +186,8 @@ module Pry::Config::Behavior
     end
   end
 
-  def respond_to_missing?(key, include_private=false)
-    key?(key) or @default.respond_to?(key) or super(key, include_private)
+  def respond_to_missing?(key, include_all=false)
+    key?(key) or @default.respond_to?(key) or super(key, include_all)
   end
 
 private
diff --git a/lib/pry/last_exception.rb b/lib/pry/last_exception.rb
index 2841113d..8bf84b5a 100644
--- a/lib/pry/last_exception.rb
+++ b/lib/pry/last_exception.rb
@@ -23,8 +23,8 @@ class Pry::LastException < BasicObject
     end
   end
 
-  def respond_to_missing?(name, include_private = false)
-    @e.respond_to?(name)
+  def respond_to_missing?(name, include_all=false)
+    @e.respond_to?(name, include_all)
   end
 
   #
diff --git a/lib/pry/method.rb b/lib/pry/method.rb
index 1e209222..6ce69c88 100644
--- a/lib/pry/method.rb
+++ b/lib/pry/method.rb
@@ -461,8 +461,8 @@ class Pry
 
     # @param [String, Symbol] method_name
     # @return [Boolean]
-    def respond_to?(method_name)
-      super or @method.respond_to?(method_name)
+    def respond_to?(method_name, include_all=false)
+      super or @method.respond_to?(method_name, include_all)
     end
 
     # Delegate any unknown calls to the wrapped method.
diff --git a/lib/pry/output.rb b/lib/pry/output.rb
index cc72503f..c2be6df0 100644
--- a/lib/pry/output.rb
+++ b/lib/pry/output.rb
@@ -35,8 +35,8 @@ class Pry::Output
     @boxed_io.__send__(name, *args, &block)
   end
 
-  def respond_to_missing?(*a)
-    @boxed_io.respond_to?(*a)
+  def respond_to_missing?(m, include_all=false)
+    @boxed_io.respond_to?(m, include_all)
   end
 
   def decolorize_maybe(str)
diff --git a/lib/pry/slop.rb b/lib/pry/slop.rb
index a7792bdf..b11c37b1 100644
--- a/lib/pry/slop.rb
+++ b/lib/pry/slop.rb
@@ -332,7 +332,7 @@ class Pry::Slop
   # Override this method so we can check if an option? method exists.
   #
   # Returns true if this option key exists in our list of options.
-  def respond_to_missing?(method_name, include_private = false)
+  def respond_to_missing?(method_name, include_all=false)
     options.any? { |o| o.key == method_name.to_s.chop } || super
   end
 
diff --git a/lib/pry/wrapped_module.rb b/lib/pry/wrapped_module.rb
index c17124ea..1514af11 100644
--- a/lib/pry/wrapped_module.rb
+++ b/lib/pry/wrapped_module.rb
@@ -150,8 +150,8 @@ class Pry
       wrapped.send(method_name, *args, &block)
     end
 
-    def respond_to?(method_name)
-      super || wrapped.respond_to?(method_name)
+    def respond_to?(method_name, include_all=false)
+      super || wrapped.respond_to?(method_name, include_all)
     end
 
     # Retrieve the source location of a module. Return value is in same
diff --git a/spec/color_printer_spec.rb b/spec/color_printer_spec.rb
index 78fa6f2f..caaebc1d 100644
--- a/spec/color_printer_spec.rb
+++ b/spec/color_printer_spec.rb
@@ -1,4 +1,3 @@
-require 'helper'
 describe Pry::ColorPrinter do    
   include Pry::Helpers::Text
   let(:io) { StringIO.new }
@@ -14,6 +13,7 @@ describe Pry::ColorPrinter do
 
     describe 'Object subclass' do 
       before do
+        GC.start
         class ObjectF < Object 
           def inspect
             'foo'
@@ -30,6 +30,7 @@ describe Pry::ColorPrinter do
       after do 
         Object.send :remove_const, :ObjectF
         Object.send :remove_const, :ObjectG
+        GC.start
       end 
 
       it 'prints a string' do
@@ -52,6 +53,7 @@ describe Pry::ColorPrinter do
 
     describe 'BasicObject subclass' do
       before do
+        GC.start
         class BasicF < BasicObject
           def inspect
             'foo'
@@ -68,6 +70,7 @@ describe Pry::ColorPrinter do
       after do
         Object.__send__ :remove_const, :BasicF
         Object.__send__ :remove_const, :BasicG
+        GC.start
       end
 
       it 'prints a string' do
diff --git a/spec/commands/show_doc_spec.rb b/spec/commands/show_doc_spec.rb
index 7b5c6aec..2218c1b8 100644
--- a/spec/commands/show_doc_spec.rb
+++ b/spec/commands/show_doc_spec.rb
@@ -1,5 +1,8 @@
-require_relative '../helper'
-require "fixtures/show_source_doc_examples"
+proc do
+proc do
+Object.module_eval <<'EOS', __FILE__, __LINE__ + 1
+proc do
+proc do
 
 describe "show-doc" do
   before do
@@ -575,3 +578,8 @@ describe "show-doc" do
     end
   end
 end
+end.call
+end.call
+EOS
+end.call
+end.call
diff --git a/spec/completion_spec.rb b/spec/completion_spec.rb
index 58a193c9..faa48501 100644
--- a/spec/completion_spec.rb
+++ b/spec/completion_spec.rb
@@ -1,6 +1,8 @@
-require_relative 'helper'
-require "readline" unless defined?(Readline)
-require "pry/input_completer"
+proc do
+proc do
+Object.module_eval <<'EOS', __FILE__, __LINE__ + 1
+proc do
+proc do
 
 def completer_test(bind, pry=nil, assert_flag=true)
   test = proc {|symbol|
@@ -240,3 +242,8 @@ describe Pry::InputCompleter do
     end
   end
 end
+end.call
+end.call
+EOS
+end.call
+end.call
diff --git a/spec/helper.rb b/spec/helper.rb
index 2e39250f..6df6287f 100644
--- a/spec/helper.rb
+++ b/spec/helper.rb
@@ -1,14 +1,3 @@
-require 'bundler/setup'
-require 'pry/test/helper'
-Bundler.require :default, :test
-require_relative 'spec_helpers/mock_pry'
-require_relative 'spec_helpers/repl_tester'
-
-if ENV["COVERAGE"]
-  require "simplecov"
-  SimpleCov.start
-end
-
 class Module
   public :remove_const
   public :remove_method
@@ -18,16 +7,6 @@ Pad = Class.new do
   include Pry::Config::Behavior
 end.new(nil)
 
-# to help with tracking down bugs that cause an infinite loop in the test suite
-if ENV["SET_TRACE_FUNC"]
-  require 'set_trace' if Pry::Helpers::BaseHelpers.rbx?
-  set_trace_func proc { |event, file, line, id, binding, classname|
-     STDERR.printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
-  }
-end
-
-puts "Ruby v#{RUBY_VERSION} (#{defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"}), Pry v#{Pry::VERSION}, method_source v#{MethodSource::VERSION}, CodeRay v#{CodeRay::VERSION}, Pry::Slop v#{Pry::Slop::VERSION}"
-
 RSpec.configure do |config|
   config.expect_with :rspec do |c|
     c.syntax = [:should, :expect]
