module base class and functionality by clainatomi