unify MessageListener and CompletionListener illegal method approach

we had multiple ways of doing the same thing so i have simplified and unified this