As we are using the shapeless library throughout the stack, there is no point re-defining basic HList operations using a new ~ operator which does the same thing. Replace the constructs to rely on HLists for tuple flattening and make the existing ~ operator simply be an equivalent of :: on a shapeless.HList.