building operating systems