refactor: make some methods to private.
add :max_use option
add test
0.1.2