refactor to separate projects