Couple of inlines are needed to avoid duplication of functions between compilation units
Fully works!