TypeTuple based implementation