Refactorings.

Use two separate projects for the implementation.