getRandomTarget is now more dynamic and has a hierarchy of oepration checks
merge