abstracted out inputs