first step: set flags & ovveride self value