scx & some refactor
merge