refactoring the cullable interface