first complete implementation of to do list