Mitigated problems associated with #3 using some asynchronous dispatch queues.  Not sure if this is the best way to go about it, will need to look into other options, but works as is.