added canvas subgenerator