# Packages
Package aggregate defines interfaces and types necessary to allow users to define their own Aggregate types.
Package command contains types and interfaces for implementing Command Handlers, necessary for producing side effects in your Aggregates and system, and implement your Domain's business logic.
Package event contains types and implementations for dealing with Domain Events.
Package message exposes the generic Message type, used to represent a message in a system (e.g.
Package serde contains interfaces used for serialization and deserialization throughout the eventually library.
Package test contains some type implementations of core interfaces that are meant to be used in test code only, not in production code.
Package version contains types and utilites to deal with Optimistic Concurrency.