diff --git a/LEGO1/mxbackgroundaudiomanager.cpp b/LEGO1/mxbackgroundaudiomanager.cpp
index 6f001303..a24286ad 100644
--- a/LEGO1/mxbackgroundaudiomanager.cpp
+++ b/LEGO1/mxbackgroundaudiomanager.cpp
@@ -1,13 +1,29 @@
 #include "mxbackgroundaudiomanager.h"
 
+DECOMP_SIZE_ASSERT(MxBackgroundAudioManager, 0x150)
+
 // OFFSET: LEGO1 0x1007ea90
 MxBackgroundAudioManager::MxBackgroundAudioManager()
 {
-  // TODO
+  NotificationManager()->Register(this);
+  m_unka0 = 0;
+  m_unk138 = 0;
+  m_unk13c = 0;
+  m_unk140 = 0;
+  m_unk144 = 0;
+  m_unk148 = 0;
+  m_musicEnabled = FALSE;
 }
 
 // OFFSET: LEGO1 0x1007ec20
 MxBackgroundAudioManager::~MxBackgroundAudioManager()
+{
+  // TODO
+  NotificationManager()->Unregister(this);
+}
+
+// OFFSET: LEGO1 0x1007f470
+void MxBackgroundAudioManager::Stop()
 {
   // TODO
 }
@@ -15,5 +31,17 @@ MxBackgroundAudioManager::~MxBackgroundAudioManager()
 // OFFSET: LEGO1 0x1007f5f0
 void MxBackgroundAudioManager::Enable(MxBool p)
 {
-  // TODO
+  if (this->m_musicEnabled != p) {
+    this->m_musicEnabled = p;
+    if (!p) {
+      Stop();
+    }
+  }
+}
+
+// OFFSET: LEGO1 0x1007f650
+void MxBackgroundAudioManager::Init()
+{
+  this->m_unka0 = 0;
+  this->m_unk13c = 0;
 }
diff --git a/LEGO1/mxbackgroundaudiomanager.h b/LEGO1/mxbackgroundaudiomanager.h
index 9a23a671..c6f2f1e7 100644
--- a/LEGO1/mxbackgroundaudiomanager.h
+++ b/LEGO1/mxbackgroundaudiomanager.h
@@ -2,6 +2,9 @@
 #define MXBACKGROUNDAUDIOMANAGER_H
 
 #include "mxcore.h"
+#include "mxdsaction.h"
+#include "mxtypes.h"
+#include "mxnotificationmanager.h"
 
 // VTABLE 0x100d9fe8
 // SIZE 0x150
@@ -25,6 +28,20 @@ public:
   }
 
   __declspec(dllexport) void Enable(unsigned char p);
+private:
+  void Stop();
+  void Init();
+
+  MxBool m_musicEnabled; // 0x8
+  MxDSAction m_action1; // 0xc
+  MxS32 m_unka0;
+  MxDSAction m_action2; // 0xa4
+  MxS32 m_unk138;
+  MxS32 m_unk13c;
+  MxS32 m_unk140;
+  MxS32 m_unk144;
+  MxS16 m_unk148;
+  MxAtomId m_unk14c;
 };
 
 #endif // MXBACKGROUNDAUDIOMANAGER_H