Finished to #7 Refactoring