attached getNameAttribute to Context
added getDefaultLabel to context
refactoring of Context
remove JSX
added name to types
pass to template elements and order to help customisation
added `template` option