merging greenisus' changes with fiveagle's