commit from ex_04_06 , ex_04_07 and ex_04_09