complex model, that fixes the mistakes of its predecessor