works on better OO for messaging