reducing spill code... incomplete