refact ablejs, support mutilple context.