Split into several source files, plus a new prolog example