Solving issues #1 #2 #3 and some more details