create semi-reasonable division between interfaces, base implementations, and the implementations used by jumpjump