event model spec and factory