I don't like placing the implementation logic in enums it makes it more difficult for others to reuse as well. In general, implementation logic belongs in a class and when it is a key concept the method that is backing that logic should be behind an interface.