implementing cairo module