Improve Defer, exec
  Add Defer timeout
  Use Defer in exec method
Merge remote-tracking branch 'origin/master'