added strategy pattern for ai