abstracted out middletier stuff to common/individual middletier modules