diff --git a/src/effects-example/main.cpp b/src/effects-example/main.cpp
index 835816c..cc0964d 100644
--- a/src/effects-example/main.cpp
+++ b/src/effects-example/main.cpp
@@ -1,50 +1,49 @@
 
 #include <iostream>
-#include <boost/asio.hpp>
 #include <lager/event_loop/qt.hpp>
 #include <lager/store.hpp>
 #include <QObject>
 #include <QCoreApplication>
 #include <QTimer>
 #include "model.hpp"
 
 void repl(QObject *obj, lager::context<Action> ctx)
 {
     std::cout << "?" << std::endl;
     std::string a;
     std::cin >> a;
     if (a == "1") {
         ctx.dispatch(IncrementAction{});
     } else if (a == "2") {
         ctx.dispatch(IncrementTwiceAction{});
     } else {
         std::cout << "unrecognized action" << std::endl;
     }
 
     // XXX Why can't I just use QMetaObject::invokeMethod
     // with QueuedConnection?
     // Let's bear with it now. Will go back to this later.
     QTimer::singleShot(100, obj, [=]() {
         repl(obj, ctx);
     });
 }
 
 int main(int argc, char *argv[])
 {
     QCoreApplication app(argc, argv);
     QObject mainObject;
     IOHandler handler;
 
     auto store = lager::make_store<Action>(
         Model{},
         lager::with_qt_event_loop{mainObject},
         lager::with_deps(std::ref(handler)));
     auto context = static_cast<lager::context<Action>>(store);
 
     QTimer::singleShot(0, &mainObject,
         [obj=&mainObject, context]() {
             repl(obj, context);
         });
 
     return app.exec();
 }