Orthrus is designed to be a series of modules across various crates that can be plugged together for complex analysis across a wide range of file formats. Each library should be able to be used independently of the Orthrus application, which should be used exclusively to provide an interface for all supported files, along with supporting "projects" to address an entire directory of files, geared toward modifying a video game's assets in a simplified way. The `orthrus_core` crate is meant to hold any code that is usable by many different file formats, such as managing time/date, file I/O, and networking. All functions should be designed to take the bare minimum (if possible a `&[u8]` slice) to do their processing, and use `Box<[u8]>` if any return data is needed. Choosing to convert to `Vec` should be a conscious decision by the caller as it implies re-allocation. The `DataCursor`/`DataCursorRef`/`DataCursorMut` types in `orthrus_core` can be used if more complex data handling is needed, but they should be internal so that callers aren't forced to use them.