replaced let* with let** to lower stack requirement to help recent android phones