input handling is somehow done, but needs tests