implemented both