more fixes should follow.
NOTE: this branch (kame) is used just for refernce. this may not compile due to multiple reasons.