private void Spawn()
    {
        block = Instantiate(blockPrefab, this.gameObject.transform.position, Quaternion.identity);
        block.transform.position   = this.gameObject.transform.position;
        block.transform.localScale = new Vector3(block.transform.localScale.x /* blockWidth*/, block.transform.localScale.y, block.transform.localScale.z);
//		block.transform.SetParent (this.gameObject.transform);

        partitionableObject            = block.GetComponent <PartitionableObject> ();
        partitionableObject.blockWidth = this.blockWidth;
        physics         = block.GetComponent <PartitionablePhysicsObject> ();
        physics.enabled = false;

        blocks.Add(block);
        print(blocks.Count);
        while (blocks.Count > MAX_ACTIVE_BLOCKS)
        {
            if (blocks[0] != null)
            {
                Destroy(blocks[0].gameObject);
            }
            blocks.RemoveAt(0);
        }

        block.SetActive(true);
    }
    void Update()
    {
        if (block == null && !isSpawning)
        {
            isSpawning = true;
            StartCoroutine(SpawnPlatform());
        }
        else if (partitionableObject != null && partitionableObject.IsTangible())
        {
            physics.enabled = true;
//			block.transform.parent = null;

//			this.gameObject.transform.DetachChildren ();
            partitionableObject = null;
            physics             = null;
            block = null;
        }
    }