Write proper constructors for NJInput and subclasses. Rename base to parent to match children, d(evice internal)id to e(lement)id to avoid confusion with actual device IDs/UID.