text program(doesn't finish)