     if node == nil
     {
       node = UnsafeMutablePointer<Node<T>>.alloc(1)
-      node.memory = Node(UnsafeMutablePointer<T>.alloc(1))
     }
-    node.memory.next = nil
-    node.memory.elem.initialize(newElement)
+    node.initialize(Node(newElement))
 
     if head == nil
     {

    { // Promote the 2nd item to 1st
      head = node.memory.next

      let element = node.memory.elem.move()
      OSAtomicEnqueue(pool, node, 0)
      return element
    }

    while UnsafePointer<COpaquePointer>(pool).memory != nil
    {
      let node = UnsafeMutablePointer<Node<T>>(OSAtomicDequeue(pool, 0))
      node.dealloc(1)
    }
    // release the pool stack structure
