diff --git a/salt/matchers/list_match.py b/salt/matchers/list_match.py
index <HASH>..<HASH> 100644
--- a/salt/matchers/list_match.py
+++ b/salt/matchers/list_match.py
@@ -2,18 +2,19 @@
 # -*- coding: utf-8 -*-
 '''
 This is the default list matcher.
+
+NOTE: These functions are converted to methods on the Matcher class during master and minion startup.
+This is why they all take `self` but are not defined inside a `class:` declaration.
 '''
 from __future__ import absolute_import, print_function, unicode_literals
 
 from salt.ext import six  # pylint: disable=3rd-party-module-not-gated
 
 
-def match(tgt):
+def match(self, tgt):
     '''
     Determines if this host is on the list
     '''
     if isinstance(tgt, six.string_types):
-        return bool(','+__opts__['id']+',' in tgt
-                    or tgt.startswith(__opts__['id']+',')
-                    or tgt.endswith(','+__opts__['id']))
-    return bool(__opts__['id'] in tgt)
+        tgt = tgt.split(',')
+    return bool(self.opts['id'] in tgt)
Back out list matcher optimization, somehow breaks nodegroup matching.