removed custom eigen2 formula and simplified spread handling