it does not make sense to allow ``null`` IMO