Three steps to successful parallelization