feature: add a sml module