adding in a simple pub sub mechanism