add design patterns !
commit proxy pattern!