Migrate basic enumeration implementation to template
Migrate indexed enumeration to template
Migrate make objects perform selector to template