impl. sharing function