finished tuple implementation