added its own hw_loop