Initialization is now dynamic and cleaner