Cleaned up the init method with private/public components