Reorganized for easier development