updated constrainable interface