When creating an instance set the match/etc functions before calling initialize, in case initialize wants to make use of or override them.  Also use createInstance in _genericMatch rather than a custom instance creation, so that the two methods of matching are more similar.