more progress on semantic refactor and following support