added image caching, image when none available and some gui stuffs