Index: framspy/FramsticksCLI.py
===================================================================
--- framspy/FramsticksCLI.py	(revision 1085)
+++ framspy/FramsticksCLI.py	(revision 1087)
@@ -19,5 +19,5 @@
 
 	You need to provide one or two parameters when you run this class: the path to Framsticks CLI
-	and the name of the Framsticks CLI executable (if it is non-standard). See::
+	and, optionally, the name of the Framsticks CLI executable (if it is non-standard). See::
 		FramsticksCLI.py -h"""
 
Index: framspy/FramsticksLib.py
===================================================================
--- framspy/FramsticksLib.py	(revision 1085)
+++ framspy/FramsticksLib.py	(revision 1087)
@@ -8,5 +8,5 @@
 
 class FramsticksLib:
-	"""Communicates directly with Framsticks DLL/SO.
+	"""Communicates directly with Framsticks library (.dll or .so).
 	You can perform basic operations like mutation, crossover, and evaluation of genotypes.
 	This way you can perform evolution controlled by python as well as access and manipulate genotypes.
@@ -14,6 +14,6 @@
 	or access and control the simulation and simulated creatures step by step.
 
-	You need to provide one or two parameters when you run this class: the path to Framsticks CLI where .dll/.so resides
-	and the name of the Framsticks dll/so (if it is non-standard). See::
+	You need to provide one or two parameters when you run this class: the path to Framsticks where .dll/.so resides
+	and, optionally, the name of the Framsticks dll/so (if it is non-standard). See::
 		FramsticksLib.py -h"""
 
@@ -26,5 +26,8 @@
 
 	def __init__(self, frams_path, frams_lib_name):
-		frams.init(frams_path, frams_lib_name, "-Ddata")  # "-D"+os.path.join(frams_path,"data")) # not possible (maybe python windows issue) because of the need for os.chdir(). So we assume "data" is where the dll/so is
+		if frams_lib_name is None:
+			frams.init(frams_path)  # could add support for setting alternative directories using -D and -d
+		else:
+			frams.init(frams_path, "-L" + frams_lib_name)  # could add support for setting alternative directories using -D and -d
 
 		print('Available objects:', dir(frams))
Index: framspy/frams-test.py
===================================================================
--- framspy/frams-test.py	(revision 1085)
+++ framspy/frams-test.py	(revision 1087)
@@ -2,8 +2,9 @@
 import frams
 
-frams.init(*(sys.argv[1:])) #pass whatever args we have, init() is the right place to deal with different scenrios:
+frams.init(*(sys.argv[1:]))  # pass whatever args we have, init() is the right place to deal with different scenarios:
 # frams.init() - should try to figure out everything (and might fail)
-# frams.init('path/to/frams') - load the library from the specified dir and configure framsticks path as "data" inside the dir
-# frams.init('path/to/frams','-d/tmp/workdir/data') - as above, but set the working (writable) directory somewhere else
+# frams.init('path/to/lib') - load the library from the specified directory and configure Framsticks path as "data" inside this directory
+# frams.init('path/to/lib','-d/tmp/workdir/data') - as above, but set the working (writable) directory somewhere else (see also -D)
+# frams.init('path/to/lib','-Lframs-objects-alt.dll') - use specified library location and non-default file name
 
 print('Available objects:', dir(frams))
Index: framspy/frams.py
===================================================================
--- framspy/frams.py	(revision 1085)
+++ framspy/frams.py	(revision 1087)
@@ -23,5 +23,5 @@
 
 	_reInsideParens = re.compile('\((.*)\)')
-	_reservedWords = ['import']  # this list is scanned during every attribute access, only add what is really clashing with framsticks properties
+	_reservedWords = ['import']  # this list is scanned during every attribute access, only add what is really clashing with Framsticks properties
 	_reservedXWords = ['x' + word for word in _reservedWords]
 	_encoding = 'utf-8'
@@ -252,50 +252,50 @@
 	Initializes the connection to Framsticks dll/so.
 
-	Python programs do not have to know the framstics path but if they know, just pass the path as the first argument.
-	Similarly '-dPATH' and '-DPATH' needed by framsticks are optional and derived from the first path, unless they are specified as args in init().
-	'-lNAME' is the optional library name (full name including the file name extension), default is 'frams-objects.dll/.so' depending on the platform.
-	All other arguments are passed to framsticks and not interpreted by this function.
+	Python programs do not have to know the Framstics path but if they know, just pass the path as the first argument.
+	Similarly '-dPATH' and '-DPATH' needed by Framsticks are optional and derived from the first path, unless they are specified as args in init().
+	'-LNAME' is the optional library name (full name including the file name extension), default is 'frams-objects.dll/.so' depending on the platform.
+	All other arguments are passed to Framsticks and not interpreted by this function.
 
 	"""
 	# goals:
-	frams_d=None
-	frams_D=None
-	lib_path=None
-	lib_name='frams-objects.so' if os.name == 'posix' else 'frams-objects.dll'
-	initargs=[]
+	frams_d = None
+	frams_D = None
+	lib_path = None
+	lib_name = 'frams-objects.so' if os.name == 'posix' else 'frams-objects.dll'
+	initargs = []
 	for a in args:
-		if a[:2]=='-d':
-			frams_d=a
-		elif a[:2]=='-D':
-			frams_D=a
-		elif a[:2]=='-l':
-			lib_name=a[2:]
-		elif lib_path==None:
-			lib_path=a
+		if a[:2] == '-d':
+			frams_d = a
+		elif a[:2] == '-D':
+			frams_D = a
+		elif a[:2] == '-L':
+			lib_name = a[2:]
+		elif lib_path is None:
+			lib_path = a
 		else:
 			initargs.append(a)
-	if lib_path==None:
-		#todo: use env variable and/or the zip distribution we are in when the path is not specified in arg
-		#for now just assume the current dir is framsticks
-		lib_path='.'
+	if lib_path is None:
+		# TODO: use environment variable and/or the zip distribution we are in when the path is not specified in arg
+		# for now just assume the current dir is Framsticks
+		lib_path = '.'
 
 	original_dir = os.getcwd()
-	os.chdir(lib_path)  # because under Windows, frams.dll requires other dll's which reside in the same directory, so we must change current dir for them to be found while loading the main dll
-	abs_data=os.path.abspath('data') #use absolute path for -d and -D so python is free to cd anywhere without confusing the frams
+	os.chdir(lib_path)  # because under Windows, frams-objects.dll requires other dll's which reside in the same directory, so we must change current dir for them to be found while loading the main dll
+	abs_data = os.path.abspath('data')  # use absolute path for -d and -D so python is free to cd anywhere without confusing Framsticks
 	# for the hypothetical case without lib_path the abs_data must be obtained from somewhere else
-	if frams_d==None:
-		frams_d='-d'+abs_data
-	if frams_D==None:
-		frams_D='-D'+abs_data
-	initargs.insert(0,frams_d)
-	initargs.insert(0,frams_D)
-	initargs.insert(0,'dummy.exe')
-        
+	if frams_d is None:
+		frams_d = '-d' + abs_data
+	if frams_D is None:
+		frams_D = '-D' + abs_data
+	initargs.insert(0, frams_d)
+	initargs.insert(0, frams_D)
+	initargs.insert(0, 'dummy.exe')  # as an offset, 0th arg is by convention app name
+
 	global c_api  # access global variable
-	if lib_path!=None and os.name == 'posix':
-		lib_name = './'+lib_name #currently we always have lib_path (even if it is incorrect) but hypothetically it could work with lib_path==None and load .so from some default system path without './'
+	if lib_path is not None and os.name == 'posix':
+		lib_name = './' + lib_name  # currently we always have lib_path (even if it is incorrect) but hypothetically it could work with lib_path==None and load .so from some default system path without './'
 	c_api = ctypes.CDLL(lib_name)
 	os.chdir(original_dir)
-	
+
 	c_api.init.argtypes = [ctypes.c_int, ctypes.POINTER(ctypes.c_char_p)]
 	c_api.init.restype = None
