changed publishers / subscribers back to not templated version; added overloaded constructor with forward declare