#7 #8 refactoring
pull & merge