Division beginning and end, whittling down the problems so the core implementation can be clean and straightforward