refact ablejs, support mutiple context.