move asset functionality to its own class