better err msg
seperate class from interface