Refactor models, add docopt