some refactoring + finish method pool