             }
 
             _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);

         * be unavailable.
         * @param id The unique identifier of this OVVAsset. If not supplied,
         * it will be randomly generated.
         * @param interval The number of milliseconds between polls to
         * JavaScript for viewability information. Defaults to 250.
         */
        public function OVVAsset(adRef:*, beaconSwfUrl:String = null, id:String = null) {
            if (!externalInterfaceIsAvailable()) {
                dispatchEvent(new OVVEvent(OVVEvent.OVVError, {
                    "message": "ExternalInterface unavailable"


        private function setStage(evt:Event = null):void
        {

            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
