added LibraryFunction abstraction