added somewhat proper documentation