input : implement detach