refactor
improve documentation