sm actually implemented and working