make publisher stuff more functional