set functions virtual pure