canopy implementation