external listener and logger