final proposal but needs some checking