diff --git a/src/ax_interface/agent.py b/src/ax_interface/agent.py
index f97ef7897..82766666a 100644
--- a/src/ax_interface/agent.py
+++ b/src/ax_interface/agent.py
@@ -15,9 +15,9 @@ def __init__(self, mib_cls, update_frequency, loop):
         self.loop = loop
 
         # synchronization events
-        self.run_enabled = asyncio.Event(loop=loop)
-        self.oid_updaters_enabled = asyncio.Event(loop=loop)
-        self.stopped = asyncio.Event(loop=loop)
+        self.run_enabled = asyncio.Event()
+        self.oid_updaters_enabled = asyncio.Event()
+        self.stopped = asyncio.Event()
 
         # Initialize our MIB
         self.mib_table = MIBTable(mib_cls, update_frequency)
@@ -46,7 +46,7 @@ async def run_in_event_loop(self):
             # signal background tasks to halt
             self.oid_updaters_enabled.clear()
             # wait for handlers to come back
-            await asyncio.wait_for(background_task, BACKGROUND_WAIT_TIMEOUT, loop=self.loop)
+            await asyncio.wait_for(background_task, BACKGROUND_WAIT_TIMEOUT)
 
         # signal that we're done!
         self.stopped.set()
diff --git a/src/ax_interface/mib.py b/src/ax_interface/mib.py
index 2d8a9d2f6..404e2916a 100644
--- a/src/ax_interface/mib.py
+++ b/src/ax_interface/mib.py
@@ -300,7 +300,7 @@ def start_background_tasks(self, event):
             fut = asyncio.ensure_future(updater.start())
             fut.add_done_callback(MIBTable._done_background_task_callback)
             tasks.append(fut)
-        return asyncio.gather(*tasks, loop=event._loop)
+        return asyncio.gather(*tasks)
 
     def _find_parent_prefix(self, item):
         oids = sorted(self.prefixes)
diff --git a/src/ax_interface/protocol.py b/src/ax_interface/protocol.py
index 2ff21a22f..71a655904 100644
--- a/src/ax_interface/protocol.py
+++ b/src/ax_interface/protocol.py
@@ -17,7 +17,7 @@ def __init__(self, mib_table, loop):
         self.loop = loop
         self.session_id = -1
         self.mib_table = mib_table
-        self.closed = asyncio.Event(loop=loop)
+        self.closed = asyncio.Event()
         self.counter = 0
 
     def send_pdu(self, pdu):
diff --git a/tests/test_agent.py b/tests/test_agent.py
new file mode 100644
index 000000000..6b16e0cd1
--- /dev/null
+++ b/tests/test_agent.py
@@ -0,0 +1,27 @@
+import asyncio
+import os
+import sys
+import time
+from unittest import TestCase
+
+modules_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+sys.path.insert(0, os.path.join(modules_path, 'src'))
+
+import ax_interface
+
+class SonicMIB(metaclass=ax_interface.mib.MIBMeta):
+    """
+    Test
+    """
+
+class TestAgentLoop(TestCase):
+
+    async def delayed_shutdown(self, agent):
+        await asyncio.sleep(5)
+        await agent.shutdown()
+
+    def test_agent_loop(self):
+        event_loop = asyncio.get_event_loop()
+        agent = ax_interface.Agent(SonicMIB, 5, event_loop)
+        event_loop.create_task(self.delayed_shutdown(agent))
+        event_loop.run_until_complete(agent.run_in_event_loop())