more refactoring on publisher, ordered methods, removed useless methods
introduced null checks on publisher constructor