added top layer abstraction and test case