added program structure