updated with throughput