Stricter types and constructors