refactor
add extracted classses