Complete core functionality for #315