support any # of threads + correctly process leftover values