added forward decls to silence warnings