working implementation -- need to solve parallel data race issues