refactor user settings publish settings interaction