Must have public init.