all but main method drafted