diff --git a/remoteappmanager/application.py b/remoteappmanager/application.py
index 89ba765..b5131db 100644
--- a/remoteappmanager/application.py
+++ b/remoteappmanager/application.py
@@ -125,7 +125,7 @@ class Application(web.Application, LoggingMixin):
         """Initializes the user at the database level."""
         user_name = self.command_line_config.user
         user = User(name=user_name)
-        user.orm_user = self.db.get_user_by_name(user_name)
+        user.account = self.db.get_user_by_name(user_name)
         return user
 
     # Public
diff --git a/remoteappmanager/db/csv_db.py b/remoteappmanager/db/csv_db.py
index 3c00a2e..99227dc 100644
--- a/remoteappmanager/db/csv_db.py
+++ b/remoteappmanager/db/csv_db.py
@@ -158,7 +158,7 @@ class CSVAccounting(ABCAccounting):
 
         Parameters
         ----------
-        user : remoteappmanager.db.csv_db.CSVUser
+        user : CSVUser
            Same type as the result of `get_user_by_name`
 
         Returns
diff --git a/remoteappmanager/db/interfaces.py b/remoteappmanager/db/interfaces.py
index e3c7485..4f09018 100644
--- a/remoteappmanager/db/interfaces.py
+++ b/remoteappmanager/db/interfaces.py
@@ -55,7 +55,7 @@ class ABCApplicationPolicy(metaclass=ABCMeta):
 
 
 class ABCAccounting(metaclass=ABCMeta):
-    """ Main accounting interface required by the single User application.
+    """ Main accounting interface required by the single user application.
     """
 
     @abstractmethod
@@ -69,16 +69,17 @@ class ABCAccounting(metaclass=ABCMeta):
 
         Returns
         -------
-        a User-like object that the Database understands
+        account : opaque-type
+           an object that the database understands
         """
 
     @abstractmethod
-    def get_apps_for_user(self, user):
-        """ Return an iterable of ApplicationConfig for a given User
+    def get_apps_for_user(self, account):
+        """ Return an iterable of ApplicationConfig for a given account
 
         Parameters
         ----------
-        user : User-like
+        account : opaque-type
            Same type as the result of `get_user_by_name`
 
         Returns
diff --git a/remoteappmanager/handlers/home_handler.py b/remoteappmanager/handlers/home_handler.py
index 0ec4c4e..9ba81f6 100644
--- a/remoteappmanager/handlers/home_handler.py
+++ b/remoteappmanager/handlers/home_handler.py
@@ -78,7 +78,7 @@ class HomeHandler(BaseHandler):
         mapping_id = options["mapping_id"][0]
 
         all_apps = self.application.db.get_apps_for_user(
-            self.current_user.orm_user)
+            self.current_user.account)
 
         choice = [(m_id, app, policy)
                   for m_id, app, policy in all_apps
@@ -90,9 +90,9 @@ class HomeHandler(BaseHandler):
         _, app, policy = choice[0]
 
         container = None
-        orm_user = self.current_user.orm_user
+        user_name = self.current_user.name
         try:
-            container = yield self._start_container(orm_user,
+            container = yield self._start_container(user_name,
                                                     app,
                                                     policy,
                                                     mapping_id)
@@ -172,7 +172,7 @@ class HomeHandler(BaseHandler):
         container_manager = self.application.container_manager
 
         apps = self.application.db.get_apps_for_user(
-            self.current_user.orm_user)
+            self.current_user.account)
 
         images_info = []
 
@@ -230,18 +230,16 @@ class HomeHandler(BaseHandler):
 
         return Container.from_docker_containers_dict(container_dict[0])
 
-    # FIXME: The orm_user here requires any database implementation
-    # to provide a user object with a name attribute
     @gen.coroutine
-    def _start_container(self, orm_user, app, policy, mapping_id):
+    def _start_container(self, user_name, app, policy, mapping_id):
         """Start the container. This method is a helper method that
         works with low level data and helps in issuing the request to the
         data container.
 
         Parameters
         ----------
-        orm_user : User
-            database's user object (e.g. current_user.orm_user)
+        user_name : str
+            the user name to be associated with the container
 
         app : ABCApplication
             the application to start
@@ -254,7 +252,6 @@ class HomeHandler(BaseHandler):
         Container
         """
 
-        user_name = orm_user.name
         image_name = app.image
         mount_home = policy.allow_home
         volume_spec = (policy.volume_source,
diff --git a/remoteappmanager/user.py b/remoteappmanager/user.py
index 50e3428..4820d5b 100644
--- a/remoteappmanager/user.py
+++ b/remoteappmanager/user.py
@@ -8,7 +8,5 @@ class User(HasTraits):
     # The username as passed at the config line
     name = Unicode()
 
-    # FIXME: orm_user is Any to support other database implementation
-
     #: Can be none if the username cannot be found in the database.
-    orm_user = Any()
+    account = Any()

User.orm_user should be renamed as User.account with an opaque type
The `orm_user` attribute of the singleuser app is an opaque object handled by the database's accounting.
It should be renamed as `account` and be given an opaque type.

diff --git a/tests/test_application.py b/tests/test_application.py
index eee2f8b..c51080d 100644
--- a/tests/test_application.py
+++ b/tests/test_application.py
@@ -44,7 +44,7 @@ class TestApplication(TempMixin, testing.AsyncTestCase):
         self.assertIsNotNone(app.container_manager)
         self.assertIsNotNone(app.hub)
         self.assertEqual(app.user.name, "username")
-        self.assertEqual(app.user.orm_user, None)
+        self.assertEqual(app.user.account, None)
 
 
 # FIXME: Some of these tests are the same and should be refactored
@@ -89,4 +89,4 @@ class TestApplicationWithCSV(TempMixin, testing.AsyncTestCase):
         self.assertIsNotNone(app.user)
 
         self.assertEqual(app.user.name, "username")
-        self.assertIsInstance(app.user.orm_user, test_csv_db.CSVUser)
+        self.assertIsInstance(app.user.account, test_csv_db.CSVUser)

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest flake8 sphinx coverage
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
alembic==1.15.2
annotated-types==0.7.0
arrow==1.3.0
async-generator==1.10
attrs==25.3.0
babel==2.17.0
certifi==2025.1.31
certipy==0.2.2
cffi==1.17.1
charset-normalizer==3.4.1
click==8.1.8
coverage==7.8.0
cryptography==44.0.2
docker-py==1.10.6
docker-pycreds==0.4.0
docutils==0.21.2
escapism==1.0.1
exceptiongroup==1.2.2
flake8==7.2.0
fqdn==1.5.1
greenlet==3.1.1
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
isoduration==20.11.0
Jinja2==3.1.6
jsonpointer==3.0.0
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
jupyter-events==0.12.0
jupyter_client==8.6.3
jupyter_core==5.7.2
jupyterhub==5.2.1
Mako==1.3.9
MarkupSafe==3.0.2
mccabe==0.7.0
oauthlib==3.2.2
packaging==24.2
pamela==1.2.0
platformdirs==4.3.7
pluggy==1.5.0
prometheus_client==0.21.1
pycodestyle==2.13.0
pycparser==2.22
pydantic==2.11.1
pydantic_core==2.33.0
pyflakes==3.3.1
Pygments==2.19.1
pytest==8.3.5
python-dateutil==2.9.0.post0
python-json-logger==3.3.0
PyYAML==6.0.2
pyzmq==26.3.0
referencing==0.36.2
-e git+https://github.com/simphony/simphony-remote.git@cbbed1d4e4f29aa4ccc3719d52505679abcd25c3#egg=remoteappmanager
requests==2.32.3
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.24.0
six==1.17.0
snowballstemmer==2.2.0
Sphinx==7.4.7
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
SQLAlchemy==2.0.40
tabulate==0.9.0
tomli==2.2.1
tornado==6.4.2
traitlets==5.14.3
types-python-dateutil==2.9.0.20241206
typing-inspection==0.4.0
typing_extensions==4.13.0
uri-template==1.3.0
urllib3==2.3.0
webcolors==24.11.1
websocket-client==1.8.0
zipp==3.21.0

name: simphony-remote
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - alembic==1.15.2
      - annotated-types==0.7.0
      - arrow==1.3.0
      - async-generator==1.10
      - attrs==25.3.0
      - babel==2.17.0
      - certifi==2025.1.31
      - certipy==0.2.2
      - cffi==1.17.1
      - charset-normalizer==3.4.1
      - click==8.1.8
      - coverage==7.8.0
      - cryptography==44.0.2
      - docker-py==1.10.6
      - docker-pycreds==0.4.0
      - docutils==0.21.2
      - escapism==1.0.1
      - exceptiongroup==1.2.2
      - flake8==7.2.0
      - fqdn==1.5.1
      - greenlet==3.1.1
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - isoduration==20.11.0
      - jinja2==3.1.6
      - jsonpointer==3.0.0
      - jsonschema==4.23.0
      - jsonschema-specifications==2024.10.1
      - jupyter-client==8.6.3
      - jupyter-core==5.7.2
      - jupyter-events==0.12.0
      - jupyterhub==5.2.1
      - mako==1.3.9
      - markupsafe==3.0.2
      - mccabe==0.7.0
      - oauthlib==3.2.2
      - packaging==24.2
      - pamela==1.2.0
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - prometheus-client==0.21.1
      - pycodestyle==2.13.0
      - pycparser==2.22
      - pydantic==2.11.1
      - pydantic-core==2.33.0
      - pyflakes==3.3.1
      - pygments==2.19.1
      - pytest==8.3.5
      - python-dateutil==2.9.0.post0
      - python-json-logger==3.3.0
      - pyyaml==6.0.2
      - pyzmq==26.3.0
      - referencing==0.36.2
      - requests==2.32.3
      - rfc3339-validator==0.1.4
      - rfc3986-validator==0.1.1
      - rpds-py==0.24.0
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==7.4.7
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - sqlalchemy==2.0.40
      - tabulate==0.9.0
      - tomli==2.2.1
      - tornado==6.4.2
      - traitlets==5.14.3
      - types-python-dateutil==2.9.0.20241206
      - typing-extensions==4.13.0
      - typing-inspection==0.4.0
      - uri-template==1.3.0
      - urllib3==2.3.0
      - webcolors==24.11.1
      - websocket-client==1.8.0
      - zipp==3.21.0
prefix: /opt/conda/envs/simphony-remote

tests/test_application.py::TestApplicationWithCSV::test_database_initialization
tests/test_application.py::TestApplication::test_initialization
tests/test_application.py::TestApplicationWithCSV::test_initialization
remoteappmanager/db/interfaces.py remoteappmanager/user.py remoteappmanager/db/csv_db.py remoteappmanager/application.py remoteappmanager/handlers/home_handler.py
remoteappmanager/db/interfaces.py remoteappmanager/user.py remoteappmanager/db/csv_db.py remoteappmanager/application.py remoteappmanager/handlers/home_handler.py