more complete binding, using c2hs and HList