framework function finished