using software to correct hardware