Canopy refactoring