Scanner redo

Document this!