cleanish, about to start some abstraction that might break this for a while.