modify
basic framework