avoid handmade typelists, use tuples