Building a program from scratch