#5: make abstract entity
#5: remove CDef toString() returning name
#5: colorful javadoc for main methods