diff --git a/LEGO1/lego/legoomni/include/legoomni.h b/LEGO1/lego/legoomni/include/legoomni.h
index ff973f95..0d31d48b 100644
--- a/LEGO1/lego/legoomni/include/legoomni.h
+++ b/LEGO1/lego/legoomni/include/legoomni.h
@@ -69,12 +69,6 @@ public:
 		c_clearScreen = 0x04
 	};
 
-	void CreateBackgroundAudio();
-	void RemoveWorld(const MxAtomId&, MxLong);
-	static int GetCurrPathInfo(LegoPathBoundary**, MxS32&);
-	static void CreateInstance();
-	static LegoOmni* GetInstance();
-
 	LegoOmni();
 	~LegoOmni() override; // vtable+00
 
@@ -108,6 +102,12 @@ public:
 	void AddWorld(LegoWorld* p_world);
 	void DeleteWorld(LegoWorld* p_world);
 	void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
+	void CreateBackgroundAudio();
+	void RemoveWorld(const MxAtomId&, MxLong);
+
+	static MxS32 GetCurrPathInfo(LegoPathBoundary**, MxS32&);
+	static void CreateInstance();
+	static LegoOmni* GetInstance();
 
 	LegoVideoManager* GetVideoManager() { return (LegoVideoManager*) m_videoManager; }
 	LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; }
diff --git a/LEGO1/lego/legoomni/include/legopathcontroller.h b/LEGO1/lego/legoomni/include/legopathcontroller.h
index 4ad0b03f..5d054356 100644
--- a/LEGO1/lego/legoomni/include/legopathcontroller.h
+++ b/LEGO1/lego/legoomni/include/legopathcontroller.h
@@ -1,8 +1,12 @@
 #ifndef LEGOPATHCONTROLLER_H
 #define LEGOPATHCONTROLLER_H
 
+#include "decomp.h"
 #include "mxcore.h"
 
+class IslePathActor;
+class LegoPathBoundary;
+
 // VTABLE: LEGO1 0x100d7d60
 // SIZE 0x40
 class LegoPathController : public MxCore {
@@ -31,6 +35,8 @@ public:
 	virtual void VTable0x14(); // vtable+0x14
 	virtual void Destroy();    // vtable+0x18
 
+	undefined4 FUN_10046770(IslePathActor* p_actor);
+	MxResult FUN_10046b30(LegoPathBoundary** p_path, MxS32& p_value);
 	void Enable(MxBool p_enable);
 };
 
diff --git a/LEGO1/lego/legoomni/include/legoworld.h b/LEGO1/lego/legoomni/include/legoworld.h
index 98dbbd5c..bd07ddc5 100644
--- a/LEGO1/lego/legoomni/include/legoworld.h
+++ b/LEGO1/lego/legoomni/include/legoworld.h
@@ -70,7 +70,7 @@ public:
 	MxBool PresentersPending();
 	void Remove(MxCore* p_object);
 	void FUN_1001fc80(IslePathActor* p_actor);
-	MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
+	MxResult GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
 	MxCore* Find(const char* p_class, const char* p_name);
 	MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId);
 
diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp
index f9c0b63c..ee9d8231 100644
--- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp
+++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp
@@ -265,16 +265,32 @@ done:
 	return m_cameraController;
 }
 
-// STUB: LEGO1 0x1001fc80
+// FUNCTION: LEGO1 0x1001fc80
 void LegoWorld::FUN_1001fc80(IslePathActor* p_actor)
 {
+	LegoPathControllerListCursor cursor(&m_list0x68);
+	LegoPathController* controller;
+
+	while (cursor.Next(controller)) {
+		if (!controller->FUN_10046770(p_actor)) {
+			break;
+		}
+	}
 }
 
-// STUB: LEGO1 0x10020120
-MxS32 LegoWorld::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
+// FUNCTION: LEGO1 0x10020120
+MxResult LegoWorld::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
 {
-	// TODO
-	return 0;
+	LegoPathControllerListCursor cursor(&m_list0x68);
+	LegoPathController* controller;
+
+	cursor.Next(controller);
+
+	if (!controller) {
+		return FAILURE;
+	}
+
+	return controller->FUN_10046b30(p_path, p_value);
 }
 
 // FUNCTION: LEGO1 0x10020220
diff --git a/LEGO1/lego/legoomni/src/main/legoomni.cpp b/LEGO1/lego/legoomni/src/main/legoomni.cpp
index 7384da72..17106e9d 100644
--- a/LEGO1/lego/legoomni/src/main/legoomni.cpp
+++ b/LEGO1/lego/legoomni/src/main/legoomni.cpp
@@ -748,7 +748,7 @@ MxBool LegoOmni::DoesEntityExist(MxDSAction& p_dsAction)
 MxS32 LegoOmni::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
 {
 	if (::CurrentWorld() == NULL) {
-		return -1;
+		return FAILURE;
 	}
 
 	return ::CurrentWorld()->GetCurrPathInfo(p_path, p_value);
diff --git a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
index f2b4d0bb..404835eb 100644
--- a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
+++ b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
@@ -25,6 +25,18 @@ MxResult LegoPathController::Tickle()
 	return SUCCESS;
 }
 
+// STUB: LEGO1 0x10046770
+undefined4 LegoPathController::FUN_10046770(IslePathActor* p_actor)
+{
+	return 0;
+}
+
+// STUB: LEGO1 0x10046b30
+MxResult LegoPathController::FUN_10046b30(LegoPathBoundary** p_path, MxS32& p_value)
+{
+	return SUCCESS;
+}
+
 // STUB: LEGO1 0x10046be0
 void LegoPathController::Enable(MxBool p_enable)
 {