now significantly faster