refactor message view again