added Ideal signal function