Restructured for modularity
fixed specs and added new ones that are unresolved