required init