Incorporating 'Programming Techniques' into Prolog Programs