laying down the basic framework