use queue to handle async threading data