add weight function