Ignore maven target dirs
Automatically update version in ProgrammingGuide from maven version
Code tidy to remove warnings and use generics