performance improvements via restrict operator
merged