interface implementation works as planed