explain block compilation