while true do end spikes the CPU; use sleep