Factored 'top' stuff into it's own classes