bug fix - todo : refactoring