seperate v3 into modules