cleanup + adding support for a push communication model