framework refactor 2