text field wrapping support
update tests
refactored input processing into a separate file
fix shift processing