Switched from template metaprogramming to constexpr as it is more readable