initial implementation of pretty printer
improve pp formatting and support tagged values