major refactoring, moved communication handling to communication class, still buggy...