this is weird that you have two apply methods that return two different types. They should either be renamed, or return one type.

For apply, I think it works for Function-like objects (one return type), or constructor-like methods (return an instance of the trait or class that the object is a companion of).