outsourcing bindings to an extra module
removed duplicated code
additional binging movement
wait for a message if it isn't available yet