This question has been asked before here. There are some pretty good answers in that thread, especially from /u/BRBaraka.