separated algorithm from model