minor abstract modification