diff --git a/.tool-versions b/.tool-versions
index 25caefa..1143ac5 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1,2 +1,2 @@
-erlang 21.2.6
-elixir 1.8.1-otp-21
+erlang 22.0.1
+elixir 1.8.2-otp-22
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bc4e059..daff49d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -6,9 +6,11 @@ Thank you for contributing! Let's get you started!
 
 1. Fork and clone the repository
 
-2. Install dependencies: `mix deps.get`
+1. Install the Elixir/Erlang versions in [`.tool-versions`](.tool-versions)
 
-3. Write a benchmark using the following template:
+1. Install dependencies: `mix deps.get`
+
+1. Write a benchmark using the following template:
 
     ```elixir
     defmodule IdiomName.Fast do
@@ -37,8 +39,8 @@ Thank you for contributing! Let's get you started!
     IdiomName.Benchmark.benchmark()
     ```
 
-4. Run your benchmark: `mix run code/<category>/<benchmark>.exs`
+1. Run your benchmark: `mix run code/<category>/<benchmark>.exs`
 
-5. Add the output along with a description to the [README](README.md).
+1. Add the output along with a description to the [README](README.md)
 
-6. Open a Pull Request!
+1. Open a Pull Request!
diff --git a/code/general/membership.exs b/code/general/membership.exs
new file mode 100644
index 0000000..95086e4
--- /dev/null
+++ b/code/general/membership.exs
@@ -0,0 +1,64 @@
+defmodule Membership.NewMapSetMember do
+  def check_membership(range, list, _mapset) do
+    find = Enum.random(range)
+    mapset = MapSet.new(list)
+    MapSet.member?(mapset, find)
+  end
+end
+
+defmodule Membership.MapSetMember do
+  def check_membership(range, _list, mapset) do
+    find = Enum.random(range)
+    MapSet.member?(mapset, find)
+  end
+end
+
+defmodule Membership.EnumMember do
+  def check_membership(range, list, _mapset) do
+    find = Enum.random(range)
+    Enum.member?(list, find)
+  end
+end
+
+defmodule Membership.EnumAny do
+  def check_membership(range, list, _mapset) do
+    find = Enum.random(range)
+    Enum.any?(list, &(&1 == find))
+  end
+end
+
+defmodule Membership.In do
+  def check_membership(range, list, _mapset) do
+    find = Enum.random(range)
+    find in list
+  end
+end
+
+defmodule Membership.Benchmark do
+  @inputs %{
+    "Large" => {1..1_000_000, Enum.shuffle(1..1_000_000), MapSet.new(1..1_000_000)},
+    "Medium" => {1..10_000, Enum.shuffle(1..10_000), MapSet.new(1..10_000)},
+    "Small" => {1..100, Enum.shuffle(1..100), MapSet.new(1..100)}
+  }
+
+  def benchmark do
+    Benchee.run(
+      %{
+        "New MapSet + MapSet.member?" => fn input -> bench(Membership.NewMapSetMember, input) end,
+        "MapSet.member?" => fn input -> bench(Membership.MapSetMember, input) end,
+        "Enum.member?" => fn input -> bench(Membership.EnumMember, input) end,
+        "Enum.any?" => fn input -> bench(Membership.EnumAny, input) end,
+        "x in y" => fn input -> bench(Membership.In, input) end
+      },
+      time: 10,
+      inputs: @inputs,
+      print: [fast_warning: false]
+    )
+  end
+
+  defp bench(module, {range, list, mapset}) do
+    module.check_membership(range, list, mapset)
+  end
+end
+
+Membership.Benchmark.benchmark()
diff --git a/mix.exs b/mix.exs
index 5bc96f4..ee4925b 100644
--- a/mix.exs
+++ b/mix.exs
@@ -2,31 +2,18 @@ defmodule FastElixir.Mixfile do
   use Mix.Project
 
   def project do
-    [app: :fast_elixir,
-     version: "0.1.0",
-     elixir: "~> 1.4",
-     build_embedded: Mix.env == :prod,
-     start_permanent: Mix.env == :prod,
-     deps: deps()]
+    [
+      app: :fast_elixir,
+      version: "0.1.0",
+      elixir: "~> 1.6",
+      build_embedded: Mix.env() == :prod,
+      start_permanent: Mix.env() == :prod,
+      deps: deps()
+    ]
   end
 
-  # Configuration for the OTP application
-  #
-  # Type "mix help compile.app" for more information
-  def application do
-    [applications: [:logger]]
-  end
-
-  # Dependencies can be Hex packages:
-  #
-  #   {:mydep, "~> 0.3.0"}
-  #
-  # Or git/path repositories:
-  #
-  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
-  #
-  # Type "mix help deps" for more examples and options
+  # Type "mix help deps" for more information
   defp deps do
-    [{:benchee, "~> 0.14"}]
+    [{:benchee, "~> 1.0"}]
   end
 end
diff --git a/mix.lock b/mix.lock
index 6590285..d3c4461 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,5 +1,5 @@
 %{
-  "benchee": {:hex, :benchee, "0.14.0", "f771f587c48b4824b497e2a3e374f75e93ef01fc329873b089a3f5dd961b80b8", [:mix], [{:deep_merge, "~> 0.1", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm"},
-  "deep_merge": {:hex, :deep_merge, "0.2.0", "c1050fa2edf4848b9f556fba1b75afc66608a4219659e3311d9c9427b5b680b3", [:mix], [], "hexpm"},
+  "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm"},
+  "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm"},
   "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], []},
 }