new function and a failing test case.
eh.
renamed one type.
refactoring in the header. code is now broken.
little more refactoring.
project compiles again.