canLaunch implementation completed