refactoring
more options
more docs