use #pragma once instead of foo*foo define guards
Remove duplicate includes