merging back with ECALDER fork