bug fix, abstract reused code