Feiran's change, unfinished
still need to merg
Feiran still working on context init
people needs class-return check pending