Added Observer pattern with the use of threads as a twist