made semantics more standard and templatized for diff types of UI