moved to an actor based model for multi-threading to increase io