huge update - awaiting feedback on bug fixes