One laptop per child: a software design