Introduction refactor
small change
small change
abstract refactor