finish the basic framework