Source: https://www.codeproject.com/Questions/144612/cannot-instantiate-abstract-class.pdf