erm... why did i make this abstract?