Added swap, made pointer policies templated