this exists
style: better to not name irrelevant pieces
style: pattern-matching is overkill for checking emptyness
style: introduce meaningful type aliases
style: isn't something like this clearer?