framework refactor 3