static moved to external files instead of inlining