basic functionality using GCD
before changing to packet queue