worked more on implementation