libvalidate function