reduce compile time by using fwd decls