diff --git a/bin/ui/sketchy/app.h b/bin/ui/sketchy/app.h
index 42a08be..0c3c21f 100644
--- a/bin/ui/sketchy/app.h
+++ b/bin/ui/sketchy/app.h
@@ -4,11 +4,12 @@
 
 #pragma once
 
-#include "lib/app/cpp/application_context.h"
-#include "lib/ui/fun/sketchy/fidl/canvas.fidl-common.h"
-#include "garnet/bin/ui/sketchy/canvas.h"
 #include "escher/escher.h"
+#include "garnet/bin/ui/sketchy/canvas.h"
+#include "lib/app/cpp/application_context.h"
 #include "lib/fidl/cpp/bindings/binding_set.h"
+#include "lib/fsl/tasks/message_loop.h"
+#include "lib/ui/fun/sketchy/fidl/canvas.fidl-common.h"
 
 namespace sketchy_service {
 
diff --git a/bin/ui/view_manager/view_registry.cc b/bin/ui/view_manager/view_registry.cc
index a119675..e4b8e6b 100644
--- a/bin/ui/view_manager/view_registry.cc
+++ b/bin/ui/view_manager/view_registry.cc
@@ -8,17 +8,18 @@
 #include <cmath>
 #include <utility>
 
-#include "lib/app/cpp/connect.h"
-#include "lib/ui/scenic/client/resources.h"
-#include "lib/ui/input/cpp/formatting.h"
-#include "lib/ui/input/fidl/ime_service.fidl.h"
-#include "lib/ui/views/cpp/formatting.h"
 #include "garnet/bin/ui/view_manager/view_impl.h"
 #include "garnet/bin/ui/view_manager/view_tree_impl.h"
+#include "lib/app/cpp/connect.h"
+#include "lib/fsl/tasks/message_loop.h"
 #include "lib/fxl/functional/make_copyable.h"
 #include "lib/fxl/logging.h"
 #include "lib/fxl/memory/weak_ptr.h"
 #include "lib/fxl/strings/string_printf.h"
+#include "lib/ui/input/cpp/formatting.h"
+#include "lib/ui/input/fidl/ime_service.fidl.h"
+#include "lib/ui/scenic/client/resources.h"
+#include "lib/ui/views/cpp/formatting.h"
 
 namespace view_manager {
 namespace {
diff --git a/examples/ui/shadertoy/client/main.cc b/examples/ui/shadertoy/client/main.cc
index 2e21368..8197739 100644
--- a/examples/ui/shadertoy/client/main.cc
+++ b/examples/ui/shadertoy/client/main.cc
@@ -5,10 +5,10 @@
 #include <trace-provider/provider.h>
 
 #include "garnet/examples/ui/shadertoy/client/view.h"
-#include "lib/ui/view_framework/view_provider_app.h"
+#include "lib/fsl/tasks/message_loop.h"
 #include "lib/fxl/command_line.h"
 #include "lib/fxl/log_settings_command_line.h"
-#include "lib/fsl/tasks/message_loop.h"
+#include "lib/ui/view_framework/view_provider_app.h"
 
 int main(int argc, const char** argv) {
   auto command_line = fxl::CommandLineFromArgcArgv(argc, argv);
diff --git a/examples/ui/shadertoy/client/view.h b/examples/ui/shadertoy/client/view.h
index f04b6fe..56a5747 100644
--- a/examples/ui/shadertoy/client/view.h
+++ b/examples/ui/shadertoy/client/view.h
@@ -4,12 +4,13 @@
 
 #pragma once
 
-#include "lib/app/cpp/application_context.h"
 #include "garnet/examples/ui/shadertoy/service/services/shadertoy.fidl.h"
 #include "garnet/examples/ui/shadertoy/service/services/shadertoy_factory.fidl.h"
+#include "lib/app/cpp/application_context.h"
+#include "lib/fsl/tasks/message_loop.h"
+#include "lib/fxl/macros.h"
 #include "lib/ui/scenic/client/resources.h"
 #include "lib/ui/view_framework/base_view.h"
-#include "lib/fxl/macros.h"
 
 namespace shadertoy_client {
 
diff --git a/examples/ui/shadertoy/service/main.cc b/examples/ui/shadertoy/service/main.cc
index 9db8f4f..e5acf50 100644
--- a/examples/ui/shadertoy/service/main.cc
+++ b/examples/ui/shadertoy/service/main.cc
@@ -4,12 +4,13 @@
 
 #include <trace-provider/provider.h>
 
-#include "lib/app/cpp/application_context.h"
-#include "garnet/examples/ui/shadertoy/service/app.h"
 #include "escher/escher.h"
 #include "escher/escher_process_init.h"
 #include "escher/vk/vulkan_device_queues.h"
 #include "escher/vk/vulkan_instance.h"
+#include "garnet/examples/ui/shadertoy/service/app.h"
+#include "lib/app/cpp/application_context.h"
+#include "lib/fsl/tasks/message_loop.h"
 
 // This is the main() function for the service that implements the
 // ShadertoyFactory API.
diff --git a/examples/ui/sketchy/app.h b/examples/ui/sketchy/app.h
index d56dffc..fcbf562 100644
--- a/examples/ui/sketchy/app.h
+++ b/examples/ui/sketchy/app.h
@@ -4,12 +4,13 @@
 
 #pragma once
 
-#include "lib/app/cpp/application_context.h"
 #include "garnet/examples/ui/sketchy/scene.h"
+#include "lib/app/cpp/application_context.h"
+#include "lib/fsl/tasks/message_loop.h"
 #include "lib/ui/scenic/client/session.h"
-#include "lib/ui/sketchy/canvas.h"
 #include "lib/ui/scenic/fidl/display_info.fidl-common.h"
 #include "lib/ui/scenic/fidl/scene_manager.fidl.h"
+#include "lib/ui/sketchy/canvas.h"
 
 namespace sketchy_example {
 
diff --git a/lib/farfs/file_system.cc b/lib/farfs/file_system.cc
index 3ecb5eb..96432e5 100644
--- a/lib/farfs/file_system.cc
+++ b/lib/farfs/file_system.cc
@@ -6,6 +6,8 @@
 
 #include <fcntl.h>
 
+#include "lib/fsl/tasks/message_loop.h"
+
 namespace archive {
 namespace {
 
@@ -23,7 +25,7 @@
   fbl::RefPtr<vmofs::VnodeDir> CreateDirectory() {
     size_t count = names.size();
     fbl::Array<fbl::StringPiece> names_array(new fbl::StringPiece[count],
-                                               count);
+                                             count);
     fbl::Array<fbl::RefPtr<vmofs::Vnode>> children_array(
         new fbl::RefPtr<vmofs::Vnode>[count], count);
     for (size_t i = 0; i < count; ++i) {
@@ -68,7 +70,7 @@
 }
 
 fbl::RefPtr<vmofs::VnodeFile> CreateFile(zx_handle_t vmo,
-                                          const DirectoryTableEntry& entry) {
+                                         const DirectoryTableEntry& entry) {
   return fbl::AdoptRef(
       new vmofs::VnodeFile(vmo, entry.data_offset, entry.data_length));
 }
@@ -83,7 +85,8 @@
 
 }  // namespace
 
-FileSystem::FileSystem(zx::vmo vmo) : vmo_(vmo.get()), vfs_(&dispatcher_) {
+FileSystem::FileSystem(zx::vmo vmo)
+    : vmo_(vmo.get()), vfs_(fsl::MessageLoop::GetCurrent()->async()) {
   uint64_t num_bytes = 0;
   zx_status_t status = vmo.get_size(&num_bytes);
   if (status != ZX_OK)
@@ -98,8 +101,8 @@
 FileSystem::~FileSystem() = default;
 
 bool FileSystem::Serve(zx::channel channel) {
-  return directory_ && vfs_.ServeDirectory(directory_,
-                                           std::move(channel)) == ZX_OK;
+  return directory_ &&
+         vfs_.ServeDirectory(directory_, std::move(channel)) == ZX_OK;
 }
 
 zx::channel FileSystem::OpenAsDirectory() {
diff --git a/lib/farfs/file_system.h b/lib/farfs/file_system.h
index 1bac0de..5c788ff 100644
--- a/lib/farfs/file_system.h
+++ b/lib/farfs/file_system.h
@@ -5,15 +5,15 @@
 #ifndef APPLICATION_LIB_FARFS_FARFS_H_
 #define APPLICATION_LIB_FARFS_FARFS_H_
 
+#include <fs/managed-vfs.h>
+#include <vmofs/vmofs.h>
 #include <zx/channel.h>
 #include <zx/vmo.h>
-#include <vmofs/vmofs.h>
 
 #include <memory>
 
 #include "garnet/lib/far/archive_reader.h"
 #include "lib/fxl/files/unique_fd.h"
-#include "lib/fsl/vfs/vfs_dispatcher.h"
 
 namespace archive {
 
@@ -47,8 +47,7 @@
   // The owning reference to the vmo is stored inside |reader_| as a file
   /// descriptor.
   zx_handle_t vmo_;
-  fs::Vfs vfs_;
-  fsl::VFSDispatcher dispatcher_;
+  fs::ManagedVfs vfs_;
   std::unique_ptr<ArchiveReader> reader_;
   fbl::RefPtr<vmofs::VnodeDir> directory_;
 };
diff --git a/public/lib/fsl/BUILD.gn b/public/lib/fsl/BUILD.gn
index d2550b9..d047730 100644
--- a/public/lib/fsl/BUILD.gn
+++ b/public/lib/fsl/BUILD.gn
@@ -22,7 +22,6 @@
     "//garnet/public/lib/fsl/socket",
     "//garnet/public/lib/fsl/tasks",
     "//garnet/public/lib/fsl/threading",
-    "//garnet/public/lib/fsl/vfs",
     "//garnet/public/lib/fsl/vmo",
     "//garnet/public/lib/fsl/waiter",
   ]
diff --git a/public/lib/fsl/tasks/BUILD.gn b/public/lib/fsl/tasks/BUILD.gn
index 0e7a2c4..3283198 100644
--- a/public/lib/fsl/tasks/BUILD.gn
+++ b/public/lib/fsl/tasks/BUILD.gn
@@ -17,6 +17,7 @@
   ]
   libs = [
     "async-default",
+    "fdio",
     "zircon",
   ]
   public_deps = [
diff --git a/public/lib/fsl/vfs/BUILD.gn b/public/lib/fsl/vfs/BUILD.gn
deleted file mode 100644
index ff08091..0000000
--- a/public/lib/fsl/vfs/BUILD.gn
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-source_set("vfs") {
-  visibility = [ "//garnet/public/lib/fsl/*" ]
-
-  sources = [
-    "vfs_dispatcher.cc",
-    "vfs_dispatcher.h",
-    "vfs_handler.cc",
-    "vfs_handler.h",
-  ]
-
-  libs = [ "fdio" ]
-
-  defines = [ "_ALL_SOURCE=1" ]
-
-  public_deps = [
-    "//garnet/public/lib/fxl",
-    "//garnet/public/lib/fsl/tasks",
-    "//zircon/system/ulib/fs",
-    "//zircon/system/ulib/zx",
-  ]
-
-  deps = [
-    "//zircon/system/ulib/fbl",
-  ]
-}
diff --git a/public/lib/fsl/vfs/vfs_dispatcher.cc b/public/lib/fsl/vfs/vfs_dispatcher.cc
deleted file mode 100644
index c810a2d..0000000
--- a/public/lib/fsl/vfs/vfs_dispatcher.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "lib/fsl/vfs/vfs_dispatcher.h"
-
-#include <fdio/remoteio.h>
-
-#include "lib/fsl/vfs/vfs_handler.h"
-
-namespace fsl {
-
-VFSDispatcher::VFSDispatcher() = default;
-
-VFSDispatcher::~VFSDispatcher() {
-  for (auto handler : std::move(handlers_))
-    delete handler;
-}
-
-zx_status_t VFSDispatcher::AddVFSHandler(zx::channel channel,
-                                         fs::vfs_dispatcher_cb_t callback,
-                                         void* iostate) {
-  VFSHandler* handler = new VFSHandler(this);
-  handler->Start(std::move(channel), callback, iostate);
-  handlers_.insert(handler);
-  return ZX_OK;
-}
-
-void VFSDispatcher::Stop(VFSHandler* handler) {
-  handlers_.erase(handler);
-  delete handler;
-}
-
-}  // namespace fsl
diff --git a/public/lib/fsl/vfs/vfs_dispatcher.h b/public/lib/fsl/vfs/vfs_dispatcher.h
deleted file mode 100644
index fd41075..0000000
--- a/public/lib/fsl/vfs/vfs_dispatcher.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef LIB_FSL_VFS_VFS_DISPATCHER_H_
-#define LIB_FSL_VFS_VFS_DISPATCHER_H_
-
-#include <fs/dispatcher.h>
-
-#include <memory>
-#include <set>
-
-#include "lib/fxl/fxl_export.h"
-#include "lib/fxl/macros.h"
-#include "lib/fsl/vfs/vfs_handler.h"
-
-namespace fsl {
-
-class FXL_EXPORT VFSDispatcher : public fs::Dispatcher {
- public:
-  VFSDispatcher();
-  ~VFSDispatcher() override;
-
-  zx_status_t AddVFSHandler(zx::channel channel,
-                            fs::vfs_dispatcher_cb_t callback,
-                            void* iostate) final;
-  void Stop(VFSHandler* handler);
-
- private:
-  std::set<VFSHandler*> handlers_;
-
-  FXL_DISALLOW_COPY_AND_ASSIGN(VFSDispatcher);
-};
-
-}  // namespace fsl
-
-#endif  // LIB_FSL_VFS_VFS_DISPATCHER_H_
diff --git a/public/lib/fsl/vfs/vfs_handler.cc b/public/lib/fsl/vfs/vfs_handler.cc
deleted file mode 100644
index 612f043..0000000
--- a/public/lib/fsl/vfs/vfs_handler.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "lib/fsl/vfs/vfs_handler.h"
-
-#include <fdio/remoteio.h>
-
-#include "lib/fsl/vfs/vfs_dispatcher.h"
-
-namespace fsl {
-
-VFSHandler::VFSHandler(VFSDispatcher* dispatcher)
-    : dispatcher_(dispatcher), key_(0), iostate_(nullptr) {
-  FXL_DCHECK(dispatcher_);
-}
-
-VFSHandler::~VFSHandler() {
-  if (key_) {
-    fsl::MessageLoop::GetCurrent()->RemoveHandler(key_);
-    key_ = 0;
-    zxrio_handler(ZX_HANDLE_INVALID, (void*)callback_, iostate_);
-  }
-}
-
-void VFSHandler::Start(zx::channel channel,
-                       fs::vfs_dispatcher_cb_t callback,
-                       void* iostate) {
-  FXL_DCHECK(!channel_);
-  channel_ = std::move(channel);
-  callback_ = callback;
-  iostate_ = iostate;
-  key_ = fsl::MessageLoop::GetCurrent()->AddHandler(
-      this, channel_.get(), ZX_CHANNEL_READABLE | ZX_CHANNEL_PEER_CLOSED);
-}
-
-void VFSHandler::OnHandleReady(zx_handle_t handle,
-                               zx_signals_t pending,
-                               uint64_t count) {
-  if (pending & ZX_CHANNEL_READABLE) {
-    zx_status_t status =
-        zxrio_handler(channel_.get(), (void*)callback_, iostate_);
-    if (status == ZX_OK)
-      return;
-    Stop(status < 0);
-  } else {
-    FXL_DCHECK(pending & ZX_CHANNEL_PEER_CLOSED);
-    Stop(true);
-  }
-}
-
-void VFSHandler::OnHandleError(zx_handle_t handle, zx_status_t error) {
-  FXL_DLOG(ERROR) << "VFSHandler::OnHandleError error=" << error;
-  Stop(true);
-}
-
-void VFSHandler::Stop(bool needs_close) {
-  FXL_DCHECK(key_);
-  fsl::MessageLoop::GetCurrent()->RemoveHandler(key_);
-  key_ = 0;
-  if (needs_close)
-    zxrio_handler(ZX_HANDLE_INVALID, (void*)callback_, iostate_);
-  dispatcher_->Stop(this);
-  // We're deleted now.
-}
-
-}  // namespace fsl
diff --git a/public/lib/fsl/vfs/vfs_handler.h b/public/lib/fsl/vfs/vfs_handler.h
deleted file mode 100644
index 2105596..0000000
--- a/public/lib/fsl/vfs/vfs_handler.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef LIB_FSL_VFS_VFS_HANDLER_H_
-#define LIB_FSL_VFS_VFS_HANDLER_H_
-
-#include <fs/dispatcher.h>
-#include <zx/channel.h>
-
-#include "lib/fxl/fxl_export.h"
-#include "lib/fsl/tasks/message_loop.h"
-#include "lib/fsl/tasks/message_loop_handler.h"
-
-namespace fsl {
-class VFSDispatcher;
-
-class FXL_EXPORT VFSHandler : public MessageLoopHandler {
- public:
-  explicit VFSHandler(VFSDispatcher* dispatcher);
-  ~VFSHandler() override;
-
-  void Start(zx::channel channel,
-             fs::vfs_dispatcher_cb_t callback,
-             void* iostate);
-
- private:
-  // |MessageLoopHandler| implementation:
-  void OnHandleReady(zx_handle_t handle,
-                     zx_signals_t pending,
-                     uint64_t count) override;
-  void OnHandleError(zx_handle_t handle, zx_status_t error) override;
-
-  void Stop(bool needs_close);
-
-  VFSDispatcher* dispatcher_;
-  MessageLoop::HandlerKey key_;
-  zx::channel channel_;
-  fs::vfs_dispatcher_cb_t callback_;
-  void* iostate_;
-
-  FXL_DISALLOW_COPY_AND_ASSIGN(VFSHandler);
-};
-
-}  // namespace fsl
-
-#endif  // LIB_FSL_VFS_VFS_HANDLER_H_
diff --git a/public/lib/svc/cpp/service_namespace.cc b/public/lib/svc/cpp/service_namespace.cc
index a06e608..9986ee1 100644
--- a/public/lib/svc/cpp/service_namespace.cc
+++ b/public/lib/svc/cpp/service_namespace.cc
@@ -5,21 +5,23 @@
 #include "lib/svc/cpp/service_namespace.h"
 
 #include <fcntl.h>
-#include <zircon/device/vfs.h>
 #include <fdio/util.h>
+#include <zircon/device/vfs.h>
 
 #include <utility>
 
+#include "lib/fsl/tasks/message_loop.h"
 #include "lib/fxl/files/unique_fd.h"
 
 namespace app {
 
 ServiceNamespace::ServiceNamespace()
-    : directory_(fbl::AdoptRef(new svcfs::VnodeDir())) {}
+    : vfs_(fsl::MessageLoop::GetCurrent()->async()),
+      directory_(fbl::AdoptRef(new svcfs::VnodeDir())) {}
 
 ServiceNamespace::ServiceNamespace(
     fidl::InterfaceRequest<app::ServiceProvider> request)
-    : vfs_(&dispatcher_), directory_(fbl::AdoptRef(new svcfs::VnodeDir())) {
+    : ServiceNamespace() {
   AddBinding(std::move(request));
 }
 
diff --git a/public/lib/svc/cpp/service_namespace.h b/public/lib/svc/cpp/service_namespace.h
index 087c8b9..43324e1 100644
--- a/public/lib/svc/cpp/service_namespace.h
+++ b/public/lib/svc/cpp/service_namespace.h
@@ -5,9 +5,10 @@
 #ifndef APPLICATION_LIB_SVC_SERVICE_NAMESPACE_H_
 #define APPLICATION_LIB_SVC_SERVICE_NAMESPACE_H_
 
-#include <zx/channel.h>
 #include <fbl/ref_ptr.h>
+#include <fs/managed-vfs.h>
 #include <svcfs/svcfs.h>
+#include <zx/channel.h>
 
 #include <functional>
 #include <string>
@@ -17,7 +18,6 @@
 #include "lib/app/fidl/service_provider.fidl.h"
 #include "lib/fidl/cpp/bindings/binding_set.h"
 #include "lib/fxl/macros.h"
-#include "lib/fsl/vfs/vfs_dispatcher.h"
 
 namespace app {
 
@@ -120,8 +120,7 @@
 
   std::unordered_map<std::string, ServiceConnector> name_to_service_connector_;
 
-  fs::Vfs vfs_;
-  fsl::VFSDispatcher dispatcher_;
+  fs::ManagedVfs vfs_;
   fbl::RefPtr<svcfs::VnodeDir> directory_;
   fidl::BindingSet<app::ServiceProvider> bindings_;
 
diff --git a/public/lib/svc/cpp/service_provider_bridge.cc b/public/lib/svc/cpp/service_provider_bridge.cc
index 5dde184..67b37b4 100644
--- a/public/lib/svc/cpp/service_provider_bridge.cc
+++ b/public/lib/svc/cpp/service_provider_bridge.cc
@@ -5,15 +5,18 @@
 #include "lib/svc/cpp/service_provider_bridge.h"
 
 #include <fcntl.h>
-#include <zircon/device/vfs.h>
 #include <fdio/util.h>
+#include <zircon/device/vfs.h>
 
 #include <utility>
 
+#include "lib/fsl/tasks/message_loop.h"
+
 namespace app {
 
 ServiceProviderBridge::ServiceProviderBridge()
-    : vfs_(&dispatcher_), directory_(fbl::AdoptRef(new svcfs::VnodeProviderDir())) {
+    : vfs_(fsl::MessageLoop::GetCurrent()->async()),
+      directory_(fbl::AdoptRef(new svcfs::VnodeProviderDir())) {
   directory_->SetServiceProvider(this);
 }
 
diff --git a/public/lib/svc/cpp/service_provider_bridge.h b/public/lib/svc/cpp/service_provider_bridge.h
index e94cdbb..6c393ac 100644
--- a/public/lib/svc/cpp/service_provider_bridge.h
+++ b/public/lib/svc/cpp/service_provider_bridge.h
@@ -5,9 +5,10 @@
 #ifndef APPLICATION_LIB_SVC_SERVICE_PROVIDER_BRIDGE_H_
 #define APPLICATION_LIB_SVC_SERVICE_PROVIDER_BRIDGE_H_
 
-#include <zx/channel.h>
 #include <fbl/ref_ptr.h>
+#include <fs/managed-vfs.h>
 #include <svcfs/svcfs.h>
+#include <zx/channel.h>
 
 #include <functional>
 #include <string>
@@ -17,7 +18,6 @@
 #include "lib/app/fidl/service_provider.fidl.h"
 #include "lib/fidl/cpp/bindings/binding_set.h"
 #include "lib/fxl/macros.h"
-#include "lib/fsl/vfs/vfs_dispatcher.h"
 
 namespace app {
 
@@ -70,8 +70,7 @@
   void ConnectToService(const fidl::String& service_name,
                         zx::channel channel) override;
 
-  fs::Vfs vfs_;
-  fsl::VFSDispatcher dispatcher_;
+  fs::ManagedVfs vfs_;
   fidl::BindingSet<app::ServiceProvider> bindings_;
   fbl::RefPtr<svcfs::VnodeProviderDir> directory_;
 
diff --git a/public/lib/ui/sketchy/canvas.cc b/public/lib/ui/sketchy/canvas.cc
index 0df7f83..c509ded 100644
--- a/public/lib/ui/sketchy/canvas.cc
+++ b/public/lib/ui/sketchy/canvas.cc
@@ -4,6 +4,8 @@
 
 #include "lib/ui/sketchy/canvas.h"
 
+#include "lib/fsl/tasks/message_loop.h"
+
 namespace sketchy_lib {
 
 Canvas::Canvas(app::ApplicationContext* context)
