refactored base class
don't drown, humans!