base functions compelete