more unified interfaces

separation of function calls, depends whether you want return value or
in out
and separation, whether you want the s matrix