Building the next generation of smart software