somewhat broken, getting closer