Added comments to main class. Everything is working 100%. TODO some last
check before submitting