added Abstract class