user communication is working, needs some refactoring because it is very ugly