learn command framework