Implement option 2 and 3