Redesign

this should incorporate @schukin's commits and some polishments from @kattrali