outsourced overload from ros util
additonal refactoring