Finished off abstract factory pattern.