better program structure