Update: add test framework