added presenter
refactored and reorganized