separated shared library code