Designing Multi-Threaded Applications Using Swift