added several s1/s2 func implementations