implement percolation