Updated with more lessons and experiments.