add enqueue implementation