base structure implemented