add pulse function