optimized but has concurrency issues
chat progress