Add implementations, this is the first version that compiles without missing things that are exposed in the interface