some update, not final yet