Splitting the implementation class into two. Adding login and permissions checks.