first commit! and program already works fine, unlikely to do major changes to it.