great theoretical programming. lets see the practice [ci skip]