improved method according to model