implemented hash