Model pull with contracts