The CLI is quite explicit and turns algorithm porting challenging (under varying data sources, e.g. via I/O, stream, etc). These routines should live under the `optim` module.