todo code along with testing