use send() instead of call.value()
use internal function appropriately
use SafeMath library to avoid overflow and underflow
this smart project can receive any amount ether any time
program logic does not affected by transactions order
program logic does not depende on block timestamp
no refund situation, so no DoS with unexpected revert
no unknown size loop