diff --git a/tools/sl4a_shell.py b/tools/sl4a_shell.py
index 1006ff8..b771417 100755
--- a/tools/sl4a_shell.py
+++ b/tools/sl4a_shell.py
@@ -13,7 +13,6 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 """Tool to interactively call sl4a methods.
 
 SL4A (Scripting Layer for Android) is an RPC service exposing API calls on
@@ -38,29 +37,32 @@
 import logging
 
 from mobly.controllers.android_device_lib import jsonrpc_shell_base
+from mobly.controllers.android_device_lib.services import sl4a_service
 
 
 class Sl4aShell(jsonrpc_shell_base.JsonRpcShellBase):
     def _start_services(self, console_env):
         """Overrides superclass."""
-        self._ad.load_sl4a()
-        console_env['s'] = self._ad.sl4a
+        self._ad.services.register('sl4a', sl4a_service.Sl4aService)
+        console_env['s'] = self._ad.services.sl4a
         console_env['sl4a'] = self._ad.sl4a
         console_env['ed'] = self._ad.ed
 
     def _get_banner(self, serial):
-        lines = ['Connected to %s.' % serial,
-                 'Call methods against:',
-                 '    ad (android_device.AndroidDevice)',
-                 '    sl4a or s (SL4A)',
-                 '    ed (EventDispatcher)']
+        lines = [
+            'Connected to %s.' % serial, 'Call methods against:',
+            '    ad (android_device.AndroidDevice)', '    sl4a or s (SL4A)',
+            '    ed (EventDispatcher)'
+        ]
         return '\n'.join(lines)
 
 
 if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description='Interactive client for sl4a.')
+    parser = argparse.ArgumentParser(
+        description='Interactive client for sl4a.')
     parser.add_argument(
-        '-s', '--serial',
+        '-s',
+        '--serial',
         help=
         'Device serial to connect to (if more than one device is connected)')
     args = parser.parse_args()
