started work on InnerProduct and OuterProduct types for abstract state manipulation