implement message repository