Added factory in companion, therefore default implementations should be
removed