Separated code into different projects for better dependency management.