Clean branch. Fixing some design issues with IMPL.