make strategies its own module use trait objects so you can mix and match strategies stop using internal state associated type..