Change: split declaration and implementation to enable dependencies