Refactored with immutable types

Cleaner codez. But plots are not discriminating clusters anymore, need to add
this back in.