implementation starting