add tuple size check, tuple elements start at 0
remove unused generic informatio, expose type def factory for custom tuples
allow for property name matcher change