I really like this "gate keeper" pattern.