move functionality to interface extension methods