redo some parts