more verbose template typenames
indentation: replace spaces with tabs
use enum instead of boolean to store representation type
got rid of some ugly one-liners
rename numberOf*() -> *count()
insert*() methods returns ptr to desctiptor