edited functionality impl