upgrade to unicorn
maybe I should use SecureRandom?