redesigned the basic structure