working version + todo added