some initial framework