program half works. but the good half.