separated crud functions