Sounds to me like you would benefit from using LayOut which is designed for doing that sort of thing.