cabal: lower bounds should be greater or equal
Factor out all core sub-modules
Re-export EitherT
Derive Eq, Read, and Enum for Metadata
Implement proper ACK parsing