add more test case
changing code structure, put behaviors into device itself