use CATransaction instead of CABasicAnimation