structural changes here and there
updated spec