This is my own framework