This uses 21 instead of 45 blocks. It is slightly slower though but that likely isn't a problem as custom blocks can run without screen refresh.