mostly abstracted I think..