Crude version working.
Make sure we always run the destroy method.
Remove program annotation.

It adds some unnecessary complexity. We can still add smth like
it later.
Refactoring.

* Split out command runner.
* Create separate type for command argument.
* Some documentation and tests