spigot algorithm