full working implementation API for smc