seperate atomic part from solver