Initial commit with subclasses set up