Dev, resolves #1 #5 #3 #2