rate.sleep() added at main(), callbacks moved to protected, topic names with underscores