need to work on documentation yet. here is at least something to look at