put back in tom's function to prepare for crazy changes ahead
many changes
no change
no change