implemented scatter