I like approach (1), implemented.