major re-factoring around TVP types