diff --git a/src/util/regex/regex-pattern-list-matcher.hpp b/src/util/regex/regex-pattern-list-matcher.hpp
index d6e3a72..827c3f2 100644
--- a/src/util/regex/regex-pattern-list-matcher.hpp
+++ b/src/util/regex/regex-pattern-list-matcher.hpp
@@ -97,7 +97,7 @@
       shared_ptr<RegexMatcher> matcher =
         make_shared<RegexBackrefMatcher>(m_expr.substr(start, end - start), m_backrefManager);
       m_backrefManager->pushRef(matcher);
-      boost::dynamic_pointer_cast<RegexBackrefMatcher>(matcher)->lateCompile();
+      dynamic_pointer_cast<RegexBackrefMatcher>(matcher)->lateCompile();
 
       m_matcherList.push_back(matcher);
     }
diff --git a/src/util/regex/regex-repeat-matcher.hpp b/src/util/regex/regex-repeat-matcher.hpp
index 502369f..ce0abb1 100644
--- a/src/util/regex/regex-repeat-matcher.hpp
+++ b/src/util/regex/regex-repeat-matcher.hpp
@@ -89,7 +89,7 @@
   if ('(' == m_expr[0]){
     matcher = make_shared<RegexBackrefMatcher>(m_expr.substr(0, m_indicator), m_backrefManager);
     m_backrefManager->pushRef(matcher);
-    boost::dynamic_pointer_cast<RegexBackrefMatcher>(matcher)->lateCompile();
+    dynamic_pointer_cast<RegexBackrefMatcher>(matcher)->lateCompile();
   }
   else{
     matcher = make_shared<RegexComponentSetMatcher>(m_expr.substr(0, m_indicator),
diff --git a/src/util/regex/regex-top-matcher.cpp b/src/util/regex/regex-top-matcher.cpp
index b00a891..6a4cf36 100644
--- a/src/util/regex/regex-top-matcher.cpp
+++ b/src/util/regex/regex-top-matcher.cpp
@@ -47,13 +47,13 @@
     expr = expr.substr(0, expr.size()-1);
 
   if ('^' != expr[0])
-    m_secondaryMatcher = make_shared<RegexPatternListMatcher>(boost::cref("<.*>*" + expr),
-                                                              boost::cref(m_secondaryBackRefManager));
+    m_secondaryMatcher = make_shared<RegexPatternListMatcher>("<.*>*" + expr,
+                                                              cref(m_secondaryBackRefManager));
   else
     expr = expr.substr(1, expr.size()-1);
 
-  m_primaryMatcher = make_shared<RegexPatternListMatcher>(boost::cref(expr),
-                                                          boost::cref(m_primaryBackRefManager));
+  m_primaryMatcher = make_shared<RegexPatternListMatcher>(func_lib::cref(expr),
+                                                          func_lib::cref(m_primaryBackRefManager));
 }
 
 bool
@@ -199,7 +199,8 @@
   if (hasAnchor)
     regexStr.append("$");
 
-  return make_shared<RegexTopMatcher>(boost::cref(regexStr));
+  // OSX 10.9 has problems with just cref
+  return make_shared<RegexTopMatcher>(func_lib::cref(regexStr));
 }
 
 std::string
diff --git a/src/util/scheduler.cpp b/src/util/scheduler.cpp
index 9a51871..4e74d10 100644
--- a/src/util/scheduler.cpp
+++ b/src/util/scheduler.cpp
@@ -62,7 +62,8 @@
 {
 }
 
-Scheduler::EventInfo::EventInfo(const time::steady_clock::TimePoint& when, const EventInfo& previousEvent)
+Scheduler::EventInfo::EventInfo(const time::steady_clock::TimePoint& when,
+                                const EventInfo& previousEvent)
   : m_scheduledTime(when)
   , m_period(previousEvent.m_period)
   , m_event(previousEvent.m_event)
@@ -101,7 +102,7 @@
                                  const Event& event)
 {
   EventQueue::iterator i = m_events.insert(EventInfo(after, period, event));
-  i->m_eventId = make_shared<EventIdImpl>(boost::cref(i));
+  i->m_eventId = make_shared<EventIdImpl>(func_lib::cref(i));
 
   if (!m_isEventExecuting)
     {
