my own version and uncompleted ones