The implementation of kawin is split into several modules to provide flexibility in its development. Everything centers around the PrecipitateBase object, which holds all the necessary model parameters and results necessary to solve the KWN model. The PrecipitateModel object inherits the PrecipitateBase object and utilizes a population balance model to solve the KWN model incorporating a particle size distribution. Some model parameters are implemented in separate classes. These include thermodynamic coupling with pycalphad (Thermodynamics, Mobility, Free Energy Hessian and Local Equilibrium), surrogate modeling, and extra factors (Elastic Factors, Shape Factors, Grain Boundary Factors and Effective Diffusion).