modify internal ns reference
modify internal ns reference
experimental: use concept
change to use tuple::tie
remove wrong constexpr