As far as I can tell there is no reason why Path Algorithm specialisations need to be singletons; it provides no particular benefit (to AStar, anyway) and it prevents the library from working properly in multithreaded workloads. The fix is trivial, simply allowing the Pathfinder class to create a new instance of the algorithm class and using that (and making sure to call clear() before returning the found path).