todo: sgd optimize general impl