self framework