update framework use dependency-injection