First implementation

Not tested but compiles w/o errors.