restructured to be an object
updated specs