moved kb input to a separate struct