all my cool functions for interleaving