separable function, because we'll need to add additional functions in the future