added cycle()