mark as much as possible as constexpr