refactor pass and documentation