updated for spring transactions