subject independent and modify some bug