rewrite them programming models