Moved implementation to seperate file