state callback added