implement base structure