This question has been asked here before fairly often. While not discouraging further answers, you may be interested in this section of the FAQ contributed largely by u/restricteddata.