don't use doit due to file handle leakage