implement strategy(...)