Made code easier to maintain. Added class to separate out method matching.
Can now define factories for implementation extends to use.