diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0c51967..7a578fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use git commit for `construct-typing` which has fixed certain bugs.
- Rename `PlaylistItemBase` to `PLItemBase` and `PatternPlaylistItem` to `PatternPLItem`.
- Rename `Polyphony` members `is_mono` to `mono` and `is_porta` to `porta`.
+- `NoModelsFound` also bases `LookupError` now.
### Fixed
diff --git a/pyflp/_events.py b/pyflp/_events.py
index aea8a27..cb93df5 100644
--- a/pyflp/_events.py
+++ b/pyflp/_events.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains implementations for various types of event data representations.
+"""Contains implementations for various types of event data and its container.
These types serve as the backbone for model creation and simplify marshalling
and unmarshalling.
diff --git a/pyflp/_models.py b/pyflp/_models.py
index fb293b8..6e7bac4 100644
--- a/pyflp/_models.py
+++ b/pyflp/_models.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the ABCs used by model classes."""
+"""Contains the ABCs used by model classes and some shared classes."""
from __future__ import annotations
diff --git a/pyflp/channel.py b/pyflp/channel.py
index abf6831..9e81221 100644
--- a/pyflp/channel.py
+++ b/pyflp/channel.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the types used by the channels and channel rack."""
+"""Contains the types used by channels and the channel rack."""
from __future__ import annotations
diff --git a/pyflp/controller.py b/pyflp/controller.py
index 5b0845a..fddae9b 100644
--- a/pyflp/controller.py
+++ b/pyflp/controller.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the types used by MIDI and remote controllers."""
+"""Contains the types used by MIDI and remote ("internal") controllers."""
from __future__ import annotations
diff --git a/pyflp/exceptions.py b/pyflp/exceptions.py
index 6484661..7a578f7 100644
--- a/pyflp/exceptions.py
+++ b/pyflp/exceptions.py
@@ -79,7 +79,7 @@ def __init__(self, desc: str):
super().__init__(f"Error parsing header: {desc}")
-class NoModelsFound(DataCorrupted):
+class NoModelsFound(DataCorrupted, LookupError):
"""Model's `__iter__` method fails to generate any model."""
diff --git a/pyflp/pattern.py b/pyflp/pattern.py
index 5f2e321..24f2c97 100644
--- a/pyflp/pattern.py
+++ b/pyflp/pattern.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the types used by MIDI patterns, notes and their automation data."""
+"""Contains the types used by patterns, MIDI notes and their automation data."""
from __future__ import annotations
diff --git a/pyflp/plugin.py b/pyflp/plugin.py
index 5dfa945..c4626d9 100644
--- a/pyflp/plugin.py
+++ b/pyflp/plugin.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the types used by native and VST plugins."""
+"""Contains the types used by native and VST plugins to store their preset data."""
from __future__ import annotations
diff --git a/pyflp/project.py b/pyflp/project.py
index d2ce8f1..f640bad 100644
--- a/pyflp/project.py
+++ b/pyflp/project.py
@@ -11,7 +11,7 @@
# GNU General Public License along with this program. If not, see
# .
-"""Contains the types used by the public API and other project-wide properties."""
+"""Contains the class (and types it uses) used by the parser and serializer."""
from __future__ import annotations