Modify architecture for more flexibility