I don't think using valueNeedle here is correct. We have two local vars --  "needle" which tracks the property name and "valueNeedle" which tracks property value. Note that we also have two return statements in this function. So you need to use the same var as you have for "match" property in both return statements.