todo
refactor do, while
labels