modified to inherit module instead of core