refactored callbacks, added CairoContext, DrawingArea and Timer