basic framewwork