original code by indexdata - MIT license
merge