basic framework, usable ver