add better tuple and struct enum support