message functionality complete