Without meaning to discourage further discussion, this question gets asked here a lot, and we have some excellent older answers.