Break out PRs into a separate file
more tests and abstractions
variable renaming.