feat(cm): merge both listeners and improve numstring