has basic functionality and seems to be working