Implement pluggable type finders

First working version - passes unit test
Refactoring