In this talk, we discuss various topics related to distributed model predictive control (DMPC). DMPC is a control methodology for large-scale dynamical systems that consist of several subsystems with a sparse dynamic interaction structure. In this context, an optimization problem that takes the system-wide performance into account is solved in distributed fashion in each sample of the DMPC controller. Two main topics are discussed in this talk: Theory and Algorithms. Theory: Traditional methods to show stability and recursive feasibility in model predictive control (MPC) include a terminal cost and a terminal constraint set that usually involve variables from all subsystems. This hinders distributed implementation of the solution algorithm and sets requirements for new stability theory in DMPC. We will briefly present some results in this direction. We will also show that these results can, for some examples, increase the region of attraction significantly, compared to using traditional MPC methods. Algorithms: To enable distributed implementation of the DMPC controller, dual decomposition is used to solve the optimization problem in distributed fashion. In dual decomposition, a gradient method is traditionally used to maximize the dual problem. However, gradient methods are known for their slow rate of convergence. In this talk, we will present different ways to improve the slow convergence rate in dual decomposition, e.g.; by using fast gradient methods, by preconditioning the problem data, and by incorporating second order information into the distributed algorithm. We will, by an example, show that these methods can reduce the number of iterations in dual decomposition by several orders of magnitude, compared to if gradient methods are used.