name the project in CMake
introduce optional<T>
begin variant<T...>
variant has an empty state which allows it to be noexcept-movable