I should probably make this testable before going further.