revision: implement sparse algorithm