super rough version, but basic functionality is in