template sponge impl