Upgrading to Puppet 3 should be done in a step-by-step procedure where your existing code will be evaluated using Puppet 3.8 and the new parser.
Thanks to the type system, it is now possible to deal with data in a far more elegant way directly in your Puppet DSL code. The new functions API allows you to immediately recognize to which module a function belongs by using namespaces. Similar functions can now be combined within a single file by making use of the dispatch method and data types, allowing a form of function overloading.
The new EPP templates offer better understanding of variable sources by using the Puppet syntax for variable references. Passing parameters to templates will allow you to make use of modules in a more flexible way.
Combining EPP templates and the HEREDOC syntax will allow you to keep template code and data directly visible inside your classes...