some compiler madness