BOUT++ is a 3D nonlinear finite-difference plasma simulation code, capable of solving quite general systems of Partial Differential Equations (PDEs), but targeted particularly on studies of the edge region of tokamak plasmas. BOUT++ is publicly available, and has been adopted by a growing number of researchers worldwide. Here we present improvements which have been made to the code since its original release, both in terms of structure and its capabilities. Some recent applications of these methods are reviewed, and areas of active development are discussed. We also present algorithms and tools which have been developed to enable creation of inputs from analytic expressions and experimental data, and for processing and visualisation of output results. This includes a new tool Hypnotoad for the creation of meshes from experimental equilibria. Algorithms have been implemented in BOUT++ to solve a range of linear algebraic problems encountered in the simulation of reduced Magnetohydrodynamics (MHD) and gyro-fluid models: A preconditioning scheme is presented which enables the plasma potential to be calculated efficiently using iterative methods supplied by the PETSc library (the Portable, Extensible Toolkit for Scientific Computation) (Balay et al. 2014), without invoking the Boussinesq approximation. Scaling studies are also performed of a linear solver used as part of physics-based preconditioning to accelerate the convergence of implicit time-integration schemes.