contructor pattern and inheritance pattern
fixing conflicts