splited buyOrUpgradeProperty into 2 func and did some other slight refactoring