using EOF