tweaked some core abstractions