using properties to eliminate redundant operations