Added documentation

Also modified constructor to ensure that level and specialization
requirements do not get mis-ordered