First pass at composer-ready