add utils:  http://blog.thecybershadow.net/2013/07/28/low-overhead-components/
** semargl.conditions -> pacahon.conditions