implementing receiver