Should this be public? Also this looks like something the reflective scanner could use too. The step arguments are a bit messy there. Thoughts?