code re-factoring: add STATE pattern for execute project