abstract a few things...