still figuring out some mvvm stuff + some optimisations, register command(not impl.)