Added `list` command and refactored everything into modules.
Broke command mega-function into separate functions.
Fold more errors into the EitherT in the stack.
Added logging statements throughout.
Output logs at the end.