Moved implementation to own file