Other people are doing this better. Please see: