not using ostruct here afaict