Total rewrite of the program to use is a and has a correctly.  Also added in javadoc for the customer and product side of things.