add minitest, update lockfile
move logic into a few classes [wip?]