split up save functionality (really)