This has been discussed on here, extensively.