not perfect, but windows also working for residue