incremental changes. more on the way. still unstable