this caching doesn't really make sense to have, when you think about it
refactor a bit to make better member access ordering easier down the line