public boolean selectTarget(String target_id) {
        String source_id = this.getSourceId();
        boolean validTarget = false;

        Connectable target_elem = (Connectable)PetriNetController.getElementById(target_id);
        if (TARGET_TRANSITION == this.target_type && target_elem instanceof Transition) {
            // this.target_id = target_id;
            this.transition_id = target_id;
            target_elem.addArcId(this.getId());
            validTarget = true;
        }
        if (TARGET_PLACE == this.target_type && target_elem instanceof Place) {
            // this.target_id = target_id;
            this.place_id = target_id;
            target_elem.addArcId(this.getId());
            validTarget = true;
        }

        if (!validTarget) return false;

        checkAndMergeDoublette();

        //unset the red arc with no target
        CanvasController.arc_no_target_id = null;

        return true;
    }