refactoring lots of change
just touch
v0.4