added multiply
refactor, separation of classes