separate into modules
fix model