fix bug and add todos