moved credentials() and vms() to the abstract calss