implement Add function