Basic Refactor

Nothing special
Partial Implementation of Case1

Still need the final test and any others that we can think of.