Merge pull request #1 from itcc-li/sprint1

Sprint1
sprint2
Merge pull request #10 from Arthur26/sprint2

Sprint2 add abstract class
testcommit
Merge pull request #2 from itcc-li/sprint2

Get abstract class
API defined
Merge pull request #3 from simonmeier/sprint2

Sprint2