refactor into wrapper methods
refactor into tiny classes for each strategy
implement conjured