move modules around, add tests