re-organised + modification