If `$name` is optional, declaring it as a constructor parameter is not very meaningful.
I suggest we either require it or remove the constructor. If we choose the former, we should also modify `Item` similarly for consistency.