a little optimize
change the status machine ( a lot to do)
add