add approach with main function in class,
refactor architecture,
add new classes.