diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro
index 62f2084c..b6bdfc28 100644
--- a/bindings/GeometryDash.bro
+++ b/bindings/GeometryDash.bro
@@ -78,7 +78,7 @@ class AnimatedSpriteDelegate {
     virtual void animationFinished(const char*) {}
 }
 
-class AppDelegate : cocos2d::CCApplication {
+class AppDelegate : cocos2d::CCApplication, cocos2d::CCSceneDelegate {
     void bgScale() = mac 0x3aaab0;
     virtual bool applicationDidFinishLaunching() = mac 0x3aa900, win 0x3cbb0;
     virtual void applicationDidEnterBackground() = mac 0x3aabe0, win 0x3cf40;
diff --git a/loader/include/Geode/cocos/layers_scenes_transitions_nodes/CCScene.h b/loader/include/Geode/cocos/layers_scenes_transitions_nodes/CCScene.h
index 3c327718..21003355 100644
--- a/loader/include/Geode/cocos/layers_scenes_transitions_nodes/CCScene.h
+++ b/loader/include/Geode/cocos/layers_scenes_transitions_nodes/CCScene.h
@@ -36,6 +36,15 @@ NS_CC_BEGIN
  * @{
  */
 
+// geode should use the cocos2d-x-gd imo
+class CCScene;
+
+class CC_DLL CCSceneDelegate {
+public: 
+    virtual void willSwitchToScene(CCScene* scene) {}
+};
+
+
 /** @brief CCScene is a subclass of CCNode that is used only as an abstract concept.
 
 CCScene an CCNode are almost identical with the difference that CCScene has it's
@@ -71,8 +80,7 @@ public:
 
         int getHighestChildZ(void);
 
-    protected:
-        void* m_pIDK;
+        CCSceneDelegate* m_pDelegate;
     )
 };