before TODO list
full version