add lib functions