Re-organize and add some bits