add aspectJ observer pattern