Mostly working now, incremental user input handling remaining.
Protect methods.