Updated weighted algo