bug fix, redesign return value