diff --git a/po/POTFILES.in b/po/POTFILES.in
index c860bff4..82401627 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,6 +10,7 @@ subiquity/client/controllers/network.py
subiquity/client/controllers/progress.py
subiquity/client/controllers/proxy.py
subiquity/client/controllers/refresh.py
+subiquity/client/controllers/serial.py
subiquity/client/controllers/snaplist.py
subiquity/client/controllers/ssh.py
subiquity/client/controllers/welcome.py
@@ -31,11 +32,13 @@ subiquity/common/api/tests/test_client.py
subiquity/common/api/tests/test_endtoend.py
subiquity/common/api/tests/test_server.py
subiquity/common/errorreport.py
-subiquity/common/filesystem.py
+subiquity/common/filesystem/__init__.py
+subiquity/common/filesystem/manipulator.py
+subiquity/common/filesystem/tests/__init__.py
+subiquity/common/filesystem/tests/test_manipulator.py
subiquity/common/__init__.py
subiquity/common/serialize.py
subiquity/common/tests/__init__.py
-subiquity/common/tests/test_filesystem.py
subiquity/common/tests/test_serialization.py
subiquity/common/types.py
subiquitycore/async_helpers.py
@@ -168,6 +171,7 @@ subiquity/ui/views/keyboard.py
subiquity/ui/views/mirror.py
subiquity/ui/views/proxy.py
subiquity/ui/views/refresh.py
+subiquity/ui/views/serial.py
subiquity/ui/views/snaplist.py
subiquity/ui/views/ssh.py
subiquity/ui/views/tests/__init__.py
diff --git a/subiquity/client/controllers/filesystem.py b/subiquity/client/controllers/filesystem.py
index dec02a74..3a231c80 100644
--- a/subiquity/client/controllers/filesystem.py
+++ b/subiquity/client/controllers/filesystem.py
@@ -19,7 +19,7 @@ import logging
from subiquitycore.lsb_release import lsb_release
from subiquity.client.controller import SubiquityTuiController
-from subiquity.common.filesystem import FilesystemManipulator
+from subiquity.common.filesystem.manipulator import FilesystemManipulator
from subiquity.common.types import ProbeStatus
from subiquity.models.filesystem import (
Bootloader,
diff --git a/subiquity/common/filesystem/__init__.py b/subiquity/common/filesystem/__init__.py
new file mode 100644
index 00000000..8290406c
--- /dev/null
+++ b/subiquity/common/filesystem/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2021 Canonical, Ltd.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
diff --git a/subiquity/common/filesystem.py b/subiquity/common/filesystem/manipulator.py
similarity index 99%
rename from subiquity/common/filesystem.py
rename to subiquity/common/filesystem/manipulator.py
index 3ad410c5..ea0932b5 100644
--- a/subiquity/common/filesystem.py
+++ b/subiquity/common/filesystem/manipulator.py
@@ -22,7 +22,7 @@ from subiquity.models.filesystem import (
Partition,
)
-log = logging.getLogger('subiquity.common.filesystem')
+log = logging.getLogger('subiquity.common.filesystem.manipulator')
BIOS_GRUB_SIZE_BYTES = 1 * 1024 * 1024 # 1MiB
diff --git a/subiquity/common/filesystem/tests/__init__.py b/subiquity/common/filesystem/tests/__init__.py
new file mode 100644
index 00000000..8290406c
--- /dev/null
+++ b/subiquity/common/filesystem/tests/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2021 Canonical, Ltd.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
diff --git a/subiquity/common/tests/test_filesystem.py b/subiquity/common/filesystem/tests/test_manipulator.py
similarity index 99%
rename from subiquity/common/tests/test_filesystem.py
rename to subiquity/common/filesystem/tests/test_manipulator.py
index 7a9a4329..3feb70f1 100644
--- a/subiquity/common/tests/test_filesystem.py
+++ b/subiquity/common/filesystem/tests/test_manipulator.py
@@ -15,7 +15,7 @@
import unittest
-from subiquity.common.filesystem import (
+from subiquity.common.filesystem.manipulator import (
FilesystemManipulator,
)
from subiquity.models.tests.test_filesystem import (
diff --git a/subiquity/server/controllers/filesystem.py b/subiquity/server/controllers/filesystem.py
index 9ee058f2..77b92600 100644
--- a/subiquity/server/controllers/filesystem.py
+++ b/subiquity/server/controllers/filesystem.py
@@ -37,7 +37,7 @@ from subiquitycore.lsb_release import lsb_release
from subiquity.common.apidef import API
from subiquity.common.errorreport import ErrorReportKind
-from subiquity.common.filesystem import FilesystemManipulator
+from subiquity.common.filesystem.manipulator import FilesystemManipulator
from subiquity.common.types import (
Bootloader,
GuidedChoice,