implemented control()