duplicate require
improvements to attributes and enumerated functionality