basic pulse functionality