made more portable and testing HMACs