solving Issue #2 and more.