There are several existing discussions of this topic, check here and here to start.

Have fun!