fix #5 impl camera_t
#3 refactoring and fix up design