Source: https://people.cs.clemson.edu/~dhouse/courses/1070/lectures/Interface.pdf