abstract calculation into variable to save duplicated processing power
rename TileProperties to TileProperty
remove necessary method
Create singleton to manage the static TileProperties
Add desirability calculation.