initial copy from colibri with refactored usage()