First implementation

Completely untested. Do not use.