required init()