todo functionality complete