main method organized