refactoring
doc block