[updated] its [updated] abstract classes major refactoring