basic structure impl.