break out links module
explicit return type
fully sealed Param; extension support via constructor function instead of subtyping