abstractions n stuff