added usage, options, and logging