Moved things (when possible) to super classes.
Created Primary abstract class
Made several classes extend Primary instead of implement MaybeHasAlias
New test cases for Fn
Modified the way Fn works (no more enum)