Extract common parts to abstract class
Merge pull request #5 from sorah/abstract_step

steps: Extract common parts to abstract class