useful functions you never really know where to put