add cal func