             }
 
             _id = (id !== null) ? id : "ovv" + Math.floor(Math.random() * 1000000000).toString();
-            _ad = adRef as DisplayObject;
+            if ( !!adRef ) {
+                _ad = adRef as DisplayObject;
+            }
             setStage();
             ExternalInterface.addCallback(_id, flashProbe);
             ExternalInterface.addCallback("onJsReady" + _id, onJsReady);


        private function setStage(evt:Event = null):void
        {
            var ad:DisplayObject = _ad as DisplayObject;
            if(!ad) return;

            ad.removeEventListener(Event.ADDED_TO_STAGE, setStage);
            try{
                _stage = ad.stage;
            }
            catch(ignore:Error){
                //stage is inaccessible
            }
            if(!_stage)
                ad.addEventListener(Event.ADDED_TO_STAGE, setStage);
        }

        private function getDisplayState(results:OVVCheck):String

         * be unavailable.
         * @param id The unique identifier of this OVVAsset. If not supplied,
         * it will be randomly generated.
         * @param adRef A reference to the top DisplayObject of the ad; used
         * to determine full-screen status when player's stage is not available.
         * Optional only for backwards compatibility.
         */
        public function OVVAsset( beaconSwfUrl:String = null, id:String = null, adRef:* = null ) {
            if (!externalInterfaceIsAvailable()) {
                dispatchEvent(new OVVEvent(OVVEvent.OVVError, {
                    "message": "ExternalInterface unavailable"
