by providing a custom copy function one can adjust otherwise non-copyable elements. This should be used cautionary because dereferencing elements may poison the cache and thus have some considerable performance impact (profile this)
this adds a minimalistic priority queue based on a binary heap