diff --git a/core.d b/core.d
index 922ccb2..3eca15c 100644
--- a/core.d
+++ b/core.d
@@ -2041,7 +2041,8 @@ interface ICoreEventLoop {
 		enum Possibilities {
 			CarryOn,
 			LocalExit,
-			GlobalExit
+			GlobalExit,
+			Interrupted
 
 		}
 		Possibilities result;
@@ -4829,7 +4830,7 @@ version(HasThread) struct ArsdCoreApplication {
 
 
 private class CoreEventLoopImplementation : ICoreEventLoop {
-	version(EmptyEventLoop) RunOnceResult runOnce(Duration timeout = Duration.max) { return RunOnceResult.Possibilities.LocalExit; }
+	version(EmptyEventLoop) RunOnceResult runOnce(Duration timeout = Duration.max) { return RunOnceResult(RunOnceResult.Possibilities.LocalExit); }
 	version(EmptyCoreEvent)
 	{
 		UnregisterToken addCallbackOnFdReadable(int fd, CallbackHelper cb){return typeof(return).init;}
@@ -4885,7 +4886,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop {
 
 			runLoopIterationDelegates();
 
-			return RunOnceResult.Possibilities.CarryOn;
+			return RunOnceResult(RunOnceResult.Possibilities.CarryOn);
 		}
 
 		// FIXME: idk how to make one event that multiple kqueues can listen to w/o being shared
@@ -5081,7 +5082,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop {
 
 			runLoopIterationDelegates();
 
-			return RunOnceResult.Possibilities.CarryOn;
+			return RunOnceResult(RunOnceResult.Possibilities.CarryOn);
 		}
 	}
 
@@ -5369,7 +5370,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop {
 			if(ret == -1) {
 				import core.stdc.errno;
 				if(errno == EINTR) {
-					return;
+					return RunOnceResult(RunOnceResult.Possibilities.Interrupted);
 				}
 				throw new ErrnoApiException("epoll_wait", errno);
 			} else if(ret == 0) {
@@ -5389,7 +5390,7 @@ private class CoreEventLoopImplementation : ICoreEventLoop {
 
 			runLoopIterationDelegates();
 
-			return RunOnceResult.Possibilities.CarryOn;
+			return RunOnceResult(RunOnceResult.Possibilities.CarryOn);
 		}
 
 		// building blocks for low-level integration with the loop
diff --git a/gamehelpers.d b/gamehelpers.d
index 9740792..83b6cb0 100644
--- a/gamehelpers.d
+++ b/gamehelpers.d
@@ -271,7 +271,7 @@ DirFlag dirFlag(Dir dir) {
 
 // this is public but like i don't want do document it since it can so easily fail the asserts.
 DirFlag dirFlag(Point dir) {
-	return dirFlag(cast(Dir) dir);
+	return dirFlag(*cast(Dir*) &dir);
 }
 
 /++