mostly done incorporating event model