simplified message callback interface