Work in progress. Suggestions & input welcome.