redesigned some parts