refactor from evo1.0.11pre