threading sorta works. really slow