split program into separate source files