rename to .hpp to avoid compiling twice