move some of the wasted logic for later use