diff --git a/.travis.yml b/.travis.yml
index 9528f6dfcab4e4ebf0f4f0a86d0f3d03e2e9dd15..da70e437d7309a198fe20f98e71f51b1e01bf8f0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -58,7 +58,7 @@ before_install:
   - pip install --upgrade wheel
   # Set numpy version first, other packages link against it
   - pip install six nose coverage codecov pytest pytest-cov coveralls codacy-coverage parameterized secp256k1prp cryptography scrypt
-  - pip install pycryptodomex  pyyaml appdirs pylibscrypt tox diff_match_patch asn1crypto
+  - pip install pycryptodomex  ruamel.yaml appdirs pylibscrypt tox diff_match_patch asn1crypto
   - pip install ecdsa requests websocket-client pytz six Click prettytable click_shell
 
 script:
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 2e53a4b6b73a66ea3b7e89f2a80940d508dcb368..e998c3ad33ab71a8fd6df72926a7755116639f8a 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -3,6 +3,7 @@ Changelog
 0.24.14
 -------
 * Add option add_tor to config storage, which allows it to use beempy in tails
+* Switch from pyyaml to ruamel.yaml
 * Remove Events requirements, beem.notify and beemapi.websocket, as it is not well tested and there are no websocket api nodes available on hive
 * Remove unnecessary requirements (pylibscrypt and future
 * add new node (fin.hive.3speak.co) and change change rpc.esteem.app to rpc.ecency.com
diff --git a/appveyor.yml b/appveyor.yml
index 9bed4837e2168b9e7629b5dfc737a608f8e87224..e18f6d341854342f0ac0b4596c5cf61c115a541c 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -50,7 +50,7 @@ install:
 - cmd: conda update -q conda
 - cmd: conda info -a
 - cmd: conda install --yes conda-build setuptools pip parameterized cryptography
-- cmd: conda install --yes pycryptodomex pyyaml pytest pytest-mock coverage mock appdirs pylibscrypt pywin32
+- cmd: conda install --yes pycryptodomex ruamel.yaml pytest pytest-mock coverage mock appdirs pylibscrypt pywin32
 - cmd: pip install scrypt -U
 - cmd: conda install --yes ecdsa requests websocket-client pytz six Click prettytable pyinstaller click-shell asn1crypto
 
diff --git a/beem/cli.py b/beem/cli.py
index 52c9b95d719613aa8557486125a854e59716a41f..15dcc81714963a6a885ae384358d1d598edc6349 100644
--- a/beem/cli.py
+++ b/beem/cli.py
@@ -16,7 +16,6 @@ import random
 import logging
 import click
 from click_shell import shell
-import yaml
 import re
 from beem.instance import set_shared_blockchain_instance, shared_blockchain_instance
 from beem.amount import Amount
diff --git a/beem/utils.py b/beem/utils.py
index 36a631c04a1eef9d608b00b0ae12c1b8354d9e43..01a796be81ff81160ca674a812f10c0c85159e83 100644
--- a/beem/utils.py
+++ b/beem/utils.py
@@ -6,7 +6,7 @@ import math
 from datetime import datetime, tzinfo, timedelta, date, time
 import pytz
 import difflib
-import yaml
+from ruamel.yaml import YAML
 
 timeFormat = "%Y-%m-%dT%H:%M:%S"
 # https://github.com/matiasb/python-unidiff/blob/master/unidiff/constants.py#L37
@@ -371,9 +371,10 @@ def seperate_yaml_dict_from_body(content):
     if len(content.split("---\n")) > 1:
         body = content[content.find("---\n", 1) + 4 :]
         yaml_content = content[content.find("---\n") + 4 : content.find("---\n", 1)]
-        parameter = yaml.load(yaml_content, Loader=yaml.FullLoader)
+        yaml=YAML(typ="safe")
+        parameter = yaml.load(yaml_content)
         if not isinstance(parameter, dict):
-            parameter = yaml.load(yaml_content.replace(":", ": ").replace("  ", " "), Loader=yaml.FullLoader)
+            parameter = yaml.load(yaml_content.replace(":", ": ").replace("  ", " "))
     else:
         body = content
     return body, parameter
diff --git a/docs/requirements.txt b/docs/requirements.txt
index fed1bfabd7a25239c55b625a16c81a2d67726e2c..cb480b035525c070127410814c4befe337fd0918 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -6,8 +6,7 @@ websocket-client
 pytz
 pycryptodomex>=3.4.6
 scrypt>=0.7.1
-Events>=0.2.2
-pyyaml
+ruamel.yaml
 pytest
 pytest-mock
 coverage
diff --git a/requirements-test.txt b/requirements-test.txt
index 5f48d12481f3d35bad2c62dcf776cfcba3cc5787..c20b9428a742d9438f773a2064bdc3f90c3a9459 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -8,9 +8,8 @@ websocket-client==0.57.0
 pytz==2020.1
 pycryptodomex==3.9.8
 scrypt==0.8.17
-Events==0.3
 cryptography==3.1.1
-pyyaml>=4.2b1
+ruamel.yaml
 mock==4.0.2
 appdirs==1.4.4
 Click==7.1.2
diff --git a/setup.py b/setup.py
index ba4e77f7f85354b0cb11d78333c7aaf705204878..4b6a8cfc0d10690a8a5b691c8fb390a55575f37e 100755
--- a/setup.py
+++ b/setup.py
@@ -31,7 +31,7 @@ requires = [
     "Click",
     "click_shell",
     "prettytable",
-    "pyyaml>=5.1",
+    "ruamel.yaml",
     "diff_match_patch",
     "asn1crypto"
 ]