complete functions