I'd recommend that you start by reading this post