First correct & nice runnable version - A few TODO's