revised Exercise04