still ironing out inconsistencies... so close