restruct and setup