further reverted for speed