Refactor to expose common interface among messages