[luke] - refactor, use chooser instead of inheritance