Started to add specs and consider the program structure