switch to listener model for now